Attualmente sto riscontrando problemi con i moduli frontend in cui le chiavi del modulo vengono in qualche modo sovrascritte e vengono visualizzate chiavi del modulo errate. Attualmente sto eseguendo il debug di questo problema nel modulo di accesso del cliente.
Questa è un'istantanea del codice su login.phtml, che ho impostato per vedere qual è il valore del 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 quindi ora dopo che ho continuato l'esecuzione del codice, la pagina viene visualizzata correttamente.
E ora vado a controllare l'input nascosto della chiave del modulo sul mio browser Chrome, tuttavia, stampa una chiave del modulo totalmente diversa da " KeyA ". Chiamiamo questa nuova chiave del modulo ' KeyB '.
Ora provo a fare il login e invio il modulo. Ho ispezionato la richiesta che viene inviata e in effetti passa una variabile chiave di valore di valore che riflette "KeyB".
Ho inserito alcuni punti di interruzione nella funzione ' validate ' di
Magento \ Framework \ Data \ Form \ formkey \ Validator
Questo è il mio comparatore. A destra, $ formKey e $ a dovrebbero corrispondere. Tuttavia, non lo fa.
$formKey = $request->getParam('form_key', null); // outputs 'KeyB'
$a = $this->_formKey->getFormKey(); // outputs 'KeyA'
Pertanto, la convalida non riesce e mi reindirizza alla pagina di accesso senza alcun messaggio di errore .
Cose da notare:
- Questo comportamento si presenta solo in Chrome e Microsoft EDGE.
- Firefox funziona bene, non si verifica alcuna sovrascrittura
- La chiave del modulo che viene stampata sembra cambiare ad ogni aggiornamento. $ retrievedKey non si aggiorna ogni volta però
Cose che ho provato:
- setup: upgrade e setup: static-content: deploy
- cancellato var / cache e var / generation
- svuotare la cache del browser e la modalità di navigazione in incognito
Non riesco proprio a capire perché il form-key viene sovrascritto?
Qualsiasi aiuto o suggerimento sul perché questo accada sarebbe fantastico. Grazie per aver letto
Aggiornamento: ho fatto un po 'di debug e ho pensato che il problema fosse causato da page-cache.js impostando di nuovo la chiave del modulo. Ciò è dovuto al fatto che controlla i miei cookie se è impostato un cookie "form_key", in caso contrario, crea una nuova chiave del modulo e salva nei cookie. Il problema è che non è in grado di salvare il cookie, ecco perché continua a creare nuove chiavi del modulo.
Aggiornamento: ho risolto il problema. Ciò è dovuto a problemi di dominio dei cookie. Grazie