No momento, estou tendo problemas com os formulários de front-end, onde as chaves do formulário estão sendo substituídas e exibindo chaves de formulário incorretas. No momento, estou depurando esse problema no formulário de login do cliente.
Este é um instantâneo do código em login.phtml, que eu configuro para ver qual é o valor do 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'.
?>
ok então agora depois que eu continuei a execução do código, ele renderiza a página com sucesso.
E agora vou inspecionar a entrada oculta da chave de formulário no meu navegador Chrome, no entanto, ela imprime uma chave de formulário totalmente diferente de ' KeyA '. Vamos nomear essa nova chave de formulário ' KeyB '.
Agora eu tento fazer um login e enviar o formulário. Inspecionei a solicitação que é enviada e, na verdade, ela passa uma variável de valor de chave de formulário que reflete 'KeyB'.
Coloquei alguns pontos de interrupção na função ' validar ' de
Magento \ Framework \ Dados \ Form \ FormKey \ Validator
Este é o meu verificador de comparação. À direita, $ formKey e $ a devem corresponder. No entanto, isso não acontece.
$formKey = $request->getParam('form_key', null); // outputs 'KeyB'
$a = $this->_formKey->getFormKey(); // outputs 'KeyA'
Assim, a validação falha e me redireciona de volta para a página de login sem nenhuma mensagem de erro .
Coisas a serem observadas:
- Esse comportamento ocorre apenas no chrome e no Microsoft EDGE.
- O Firefox funciona bem, nenhuma substituição está acontecendo
- A chave do formulário impressa parece estar mudando a cada atualização. $ retrievedKey não atualiza sempre
Coisas que tentei:
- setup: upgrade e setup: static-content: deploy
- var / cache limpo e var / generation
- cache do navegador limpo e modo de navegação anônima
Eu simplesmente não consigo entender por que a chave do formulário está sendo substituída?
Qualquer ajuda ou dicas sobre por que isso está acontecendo seria ótimo. Obrigado pela leitura
Atualização - Eu fiz alguma depuração e achei que o page-cache.js está causando o problema, definindo a chave do formulário novamente. Isso ocorre pelo fato de que ele está verificando meus cookies se um cookie 'form_key' estiver definido; caso contrário, crie uma nova chave de formulário e salve nos cookies. O problema é que não é possível salvar o cookie, é por isso que ele continua criando novas chaves de formulário.
Atualização - resolvi o problema. Isso ocorre devido a problemas no domínio de cookies. obrigado
Respostas:
No meu caso, estou usando o localhost no URL para que a solução a seguir me ajude.
Se você estiver usando o host local em sua URL no computador local, substitua-o por IP.
Quero dizer, se o seu URL é
http: // localhost / Magento2 /
substitua-o por
http://127.0.0.1/Magento2/
Espero que funcione também para o Chrome & Edge e Firefox.
fonte