Ключ форми фронтену перезаписується


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".

Я поставив кілька точок перерви у функції " перевірити "

Magento \ Framework \ Data \ Form \ FormKey \ Validator


Це моя перевірка порівняння. По праву $ formKey та $ a повинні відповідати. Однак це не так.

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


Таким чином, перевірка не вдається, і вона перенаправляє мене назад на сторінку входу, не маючи повідомлення про помилку .

Що слід зазначити:

  1. Така поведінка виникає лише у chrome та Microsoft EDGE.
  2. Firefox працює чудово, перезапис не відбувається
  3. Клавіша форми, яка роздруковується, схоже, змінюється при кожному оновленні. $ retrievedKey не оновлюється кожен раз

Що я спробував:

  1. налаштування: оновлення та налаштування: статичний контент: розгортання
  2. очищений var / cache та var / generation
  3. очищений кеш браузера та анонімний режим

Я просто не можу голову навколо, чому форма-ключ перезаписується?

Будь-яка допомога чи підказки, чому це відбувається, було б чудово. Дякуємо за прочитане

Оновлення - я зробив деяку налагодження, і я зрозумів, що page-cache.js викликає проблему, встановивши ключ форми знову. Це пов’язано з тим, що він перевіряє мої файли cookie, чи встановлено печиво 'form_key', якщо ні, створити новий ключ форми та зберегти на кукі. Проблема в тому, що він не в змозі зберегти файл cookie, тому він продовжує створювати нові клавіші форми.

Оновлення - я вирішив проблему. Це пов’язано з проблемами домену файлів cookie. Дякую


Велике спасибі за документування виправлення. Витратили деякий час на налагодження проблеми, побачивши однакову поведінку - ключ форми формується знову і знову на передовій
Paras Sood

1
У моєму випадку це був кеш системи magento, оскільки він був переміщений з інсценування. Зберігати -> Налаштування -> Конфігурація -> Система -> Кеш на повній сторінці -> Застосування кешування: Встановити вбудований кеш (якщо не впевнений, покращений чи ні лак).
Мігель Феліпе Гіллен Кало

Маючи таку саму проблему, а також перевіряв ключі форм у валідації. Ви сказали, що це пов’язано з проблемами домену файлів cookie, чи можете ви поділитися тим, як виправили це? Спасибі
Довгий MK Nguyễn

Відповіді:


0

У моєму випадку я використовую localhost в URL, тому наступне рішення допомагає мені.

Якщо ви використовуєте localhost у своїй URL-адресі на локальному комп'ютері, то замініть його на IP-адресу.

Я маю на увазі, якщо ваша URL-адреса

http: // localhost / Magento2 /

замінити його на

http://127.0.0.1/Magento2/

Сподіваємось, він також буде працювати для Chrome & Edge та Firefox.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.