2015-06-18 26 views
6

Moja strona Laravel5 używa tokenów csrf, aby zapobiec atakom CSRF. W Chrome i Firefoksie wszystko działa dobrze.Laravel 5 i Internet Explorer: Niezgodność tokena

Złożyłem stronę, aby mój klient mógł przetestować, a gdy używa Internet Explorera (9/10), ma błędy "Niezgodność Tokenów" na każdej stronie przy użyciu tokena.

Zakładam, że jest to problem dotyczący plików cookie/sesji.

Po kilku badaniach spróbowałem usunąć ukośnik w nazwie pliku cookie ("laravel_session") i zmienić sterownik sesji (domyślnie "plik"). To nie pomogło.

Wiem, że mój klient mógłby zmienić swoją "politykę zaufania" w IE, ale jest to strona publiczna, a to byłoby tylko tymczasowe rozwiązanie.

Czy coś w tym dziwnym wydaniu?

+0

Pracuję w organizacji, w której niektórzy użytkownicy przeglądają Internet Explorera od 8-11 i mam ten sam dziwny problem. Uruchomiłem aplikację HR za pomocą Laravel 5 i zaraz po uruchomieniu sprawdziłem log i zobaczyłem wszędzie błędy "Token Mismatch"! Odpowiedź @ user534498 jest dobrym początkiem i czymś, czego nie rozważałam, ale mam nadzieję, że jest więcej wyjaśnień tego problemu, ponieważ nie wiem nawet, od czego zacząć od znalezienia głównej przyczyny. – haakym

Odpowiedz

4

Nie jestem pewien co do twojej sprawy. Ale właśnie dzisiaj spotkałem ten sam problem. Tylko IE ma problem. FF i chrom działają dobrze.

Wówczas zdaję sobie sprawę, że godzina/data na serwerze jest nieprawidłowa. Ustaw serwer na aktualną datę, a teraz wszystko działa.

Domyślam się, że to dlatego, że serwer ustawi okres ważności plików cookie według własnego czasu, a na życzenie klienta IE natychmiast usunie pliki cookie, jeśli serwer będzie w tyle. Tylko moje przypuszczenie.

Mam nadzieję, że rozwiąże to twoją sprawę. Powodzenia.

+0

Twoje rozwiązanie wydaje się działać dla mnie. Tnx. – Chilion

2

miałem ten sam problem i co ustalone to dla mnie było zmienić moje ustawienia do .htaccess wygasa:

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

wcześniej, mój ExpiresDefault był A31536000 i nie miałem tekst ExpiresByType/html.

+0

świetnie, że działało :) – Effectiva

1

Napotkałem ten sam problem, a było to spowodowane błędem P3P. W obliczu problemu na Edge (Windows 10).

Zrobiłem wiele badań i ostatecznie udało mi się to naprawić.

Wszystko co musisz zrobić, to stworzyć nowy middleware i UDPATE funkcję uchwytu do,

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; 
} 

wyjaśnił szczegółowo w

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

+0

Twoje rozwiązanie nie działa dla mnie. –

+0

Nie dla mnie z jakiegoś powodu –

2

W moim przypadku problem był serwer czas. Czytałem gdzieś, że jeśli czas serwera jest starszy niż klient, IE wyczyścić pliki cookie. Potem zauważam, że czas serwera tutaj był o 8 godzin spóźniony. Po naprawieniu tego błędu Błąd Niezgodności Token zniknie.

+0

Nie daje to odpowiedzi na pytanie. Aby skrytykować lub poprosić o wyjaśnienie od autora, pozostaw komentarz pod swoim postem. – pableiros

Powiązane problemy