프런트 엔드 양식 키를 덮어 씁니다


11

현재 양식 키가 덮어 쓰여지고 잘못된 양식 키가 표시되는 프런트 엔드 양식에 문제가 있습니다. 현재 고객 로그인 양식 에서이 문제를 디버깅하고 있습니다.

이것은 login.phtml의 코드 스냅 샷이며 formkey 값이 무엇인지 확인하도록 설정되었습니다.

  <?php
      $retrievedKey =  $block->getBlockHtml('formkey');
      echo $retrievedKey ;
      // i made a breakpoint and inspected $retrievedKey, it returned a html output <input> ... </input> with a form key value of, let's name it 'keyA'.
  ?>

이제 코드 실행을 계속하면 페이지가 성공적으로 렌더링됩니다.

이제 크롬 브라우저에서 양식 키 숨겨진 입력을 검사하려고하지만 ' KeyA ' 와 완전히 다른 양식 키를 인쇄합니다 . 이 새로운 폼 키의 이름을 ' KeyB '로 지정하겠습니다 .

이제 로그인을 시도하고 양식을 제출하십시오. 전송 된 요청을 검사했으며 실제로 'KeyB'를 반영하는 값의 양식 키 변수를 전달합니다.

의 ' validate '기능에 중단 점을 배치했습니다.

Magento \ Framework \ Data \ Form \ FormKey \ Validator


이것은 내 비교 검사기입니다. 바로 $ formKey와 $ a가 일치해야합니다. 그러나 그렇지 않습니다.

 $formKey = $request->getParam('form_key', null); // outputs 'KeyB'
 $a = $this->_formKey->getFormKey(); // outputs 'KeyA'


따라서 유효성 검사가 실패하고 오류 메시지없이 로그인 페이지로 다시 리디렉션됩니다 .

참고 사항 :

  1. 이 동작은 크롬과 Microsoft EDGE에서만 발생합니다.
  2. Firefox가 제대로 작동하고 덮어 쓰기가 발생하지 않습니다.
  3. 인쇄 할 때마다 양식 키가 새로 고쳐질 때마다 변경되는 것으로 보입니다. $ retrievedKey는 매번 새로 고침되지 않습니다

내가 시도한 것 :

  1. 설정 : 업그레이드 및 설정 : 정적 내용 : 배포
  2. var / cache 및 var / generation을 지 웁니다.
  3. 브라우저 캐시 및 시크릿 모드 삭제

양식 키를 덮어 쓰는 이유는 무엇입니까?

왜 이런 일이 발생하는지에 대한 도움이나 힌트가 있으면 좋을 것입니다. 읽어 주셔서 감사합니다

업데이트-디버깅을 완료 했으며 양식 키를 다시 설정하여 page-cache.js 가 문제를 일으키는 것으로 나타났습니다 . 'form_key'쿠키가 설정되어 있으면 쿠키를 확인하고 그렇지 않은 경우 새 양식 키를 만들어 쿠키에 저장하기 때문입니다. 문제는 쿠키를 저장할 수 없기 때문에 새로운 양식 키를 계속 생성하는 것입니다.

업데이트-문제를 해결했습니다. 쿠키 도메인 문제 때문입니다. 감사


수정 사항을 문서화 해 주셔서 감사합니다. 동일한 동작을보고 문제를 디버깅하는 데 어느 정도 시간을 보냈습니다. 양식 키가 프런트 엔드에서 반복해서 생성됩니다.
Paras Sood

1
필자의 경우 스테이징 환경에서 마이그레이션되었으므로 magento 시스템 캐시였습니다. Store-> Settings-> Confguration-> System-> Full Page Cache-> Caching Application : 내장 캐시로 설정하십시오 (니스가 있는지 여부가 확실하지 않은 경우).
미구엘 펠리페 Guillen Calo

똑같은 문제가 있었고 유효성 검사에서 양식 키를보고있었습니다. 쿠키 도메인 문제로 인한 것이라고 설명했습니다. 어떻게 수정했는지 공유 할 수 있습니까? 감사합니다
Long MK Nguyễn

답변:


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.