2015-06-18 4 views
6

На моем сайте Laravel5 используются токены csrf для предотвращения атак CSRF. В Chrome и Firefox все работает отлично.Laravel 5 и Internet Explorer: несоответствие токена

Я отправил сайт для проверки моего клиента, и, когда он использует Internet Explorer (9/10), у него есть ошибки «несоответствия Token» на странице evey с использованием токена.

Я предполагаю, что это проблема с cookie/session.

После некоторого исследования я попытался удалить косую черту в имени файла cookie («laravel_session») и изменить драйвер сеанса («файл» по умолчанию). Это не помогло.

Я знаю, что мой клиент может изменить свои «политики доверия» в IE, но это общедоступный сайт, и это будет лишь временным решением.

Любые хотя бы на эту странную проблему?

+0

Я работаю в организации, где некоторые пользователи просматривают IE с 8-11, и у меня такая же странная проблема. Я запустил приложение HR, используя Laravel 5, и как только он запустился, я проверил журнал и увидел ошибки «несоответствия Token» везде! Ответ @ user534498 - хорошее начало и что-то, что я не рассматривал, но надеюсь, что есть еще кое-что объяснение этой проблеме, поскольку я даже не знаю, с чего начать, обнаружив свою основную причину. – haakym

ответ

4

Я не уверен в вашем случае. Но сегодня я столкнулся с такой же проблемой. Только IE возникла проблема. FF и хром отлично работают.

Я тогда понимаю, что это время/дата на сервере не так. Установите сервер на текущую дату, затем все работает.

Я предполагаю, что это потому, что сервер установит срок действия cookie в соответствии со своим временем, а на клиенте IE немедленно удалит файлы cookie, если сервер отстает. Просто думаю.

Надеюсь, что он может решить ваш случай тоже. Удачи.

+0

Ваше решение, похоже, работает на меня. Tnx. – Chilion

2

У меня была та же проблема, что и установил ее для меня, чтобы изменить мой .htaccess истекают настройки для:

<IfModule mod_expires.c> 
    ExpiresActive On 
    ExpiresDefault A0 
    ExpiresByType text/html A0 
    # Set up caching on media files for 1 year 
    <FilesMatch "\.(jpg|png|gif|js|css|ico|woff|woff2|eot|svg|ttf)$"> 
     ExpiresDefault A31536000 
    </FilesMatch> 
</IfModule> 

Перед мой ExpiresDefault был A31536000, и я не имел ExpiresByType текст/html.

+0

отлично, что сработало :) – Effectiva

1

Я столкнулся с той же проблемой, и это было связано с ошибкой P3P. Столкнулся с проблемой на Edge (Windows 10).

Я провел много исследований и, наконец, исправил их.

Все, что вам нужно сделать, это создать новую ИЕ и udpate функции Дескриптора,

public function handle($request, Closure $next) 
{ 
    $response = $next($request); 
    $response->header('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); 
    return $response; 
} 

Разъяснение его подробно на

https://robinz.in/csrf-token-session-error-with-laravel-on-ie-edge/

+0

Ваше решение, похоже, не работает для меня. –

+0

Ни для меня почему-то –

2

В моем случае проблема была сервер время. Я где-то читал, что если время сервера старше клиента, IE очистит файлы cookie. Затем я заметил, что время сервера было опоздано на 8 часов. После исправления ошибки Ошибка несоответствия токена исчезнет.

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – pableiros