2015-06-18 6 views
6

Meine Laravel5-Website verwendet csrf-Tokens, um CSRF-Angriffe zu verhindern. Auf Chrome und Firefox funktioniert alles.Laravel 5 und Internet Explorer: Token Mismatch

Ich habe die Site für meinen Client zum Testen eingereicht, und wenn er Internet Explorer (9/10) verwendet, hat er "Token Mismatch" -Fehler auf jeder Seite mit dem Token.

Ich nehme an, es ist ein Cookie/Session-Problem.

Nach einigen Nachforschungen habe ich versucht, den Schrägstrich im Cookie-Namen ("laravel_session") zu entfernen und den Session-Treiber ("Datei" standardmäßig) zu ändern. Es hat nicht geholfen.

Ich weiß, dass mein Client seine "Trust Policies" im IE ändern könnte, aber es ist eine öffentliche Site und dies wäre nur eine temporäre Lösung.

Irgendwelche Gedanken zu diesem seltsamen Thema?

+0

Ich arbeite in einer Organisation, wo einige Benutzer mit IE von 8-11 stöbern und ich habe das gleiche seltsame Problem. Ich startete eine HR-Anwendung mit Laravel 5 und sobald es startete, überprüfte ich das Protokoll und sah "Token Mismatch" Fehler überall! @ user534498's Antwort ist ein guter Anfang und etwas, das ich nicht in Betracht gezogen hatte, aber ich hoffe, dass es noch mehr Erklärungen zu diesem Thema gibt, da ich nicht einmal weiß, wo ich anfangen soll, um die Ursache zu finden. – haakym

Antwort

4

Ich bin mir nicht sicher über Ihren Fall. Aber ich bin heute auf dasselbe Problem gestoßen. Nur IE hat ein Problem. FF und Chrome funktioniert gut.

Ich merke dann, dass es die Uhrzeit/Datum am Server ist falsch. Setzen Sie den Server auf das aktuelle Datum, dann funktioniert alles jetzt.

Ich denke, es ist, weil der Server Cookie-Ablauf entsprechend seiner eigenen Zeit setzen wird, und auf dem Client, IE wird die Cookies sofort löschen, wenn der Server zurückliegt. Nur meine Vermutung.

Hoffe, es kann Ihren Fall zu lösen. Viel Glück.

+0

Ihre Lösung scheint für mich zu funktionieren. Tnx. – Chilion

2

hatte ich das gleiche Problem und für mich, was war reparierte es meine .htaccess-Einstellungen ablaufen zu bearbeiten:

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

Bevor mein ExpiresDefault war A31536000 und ich hatte nicht die ExpiresByType text/html.

+0

toll das hat funktioniert :) – Effectiva

1

Ich konfrontiert das gleiche Problem, und es war wegen P3P Fehler. Konfrontiert mit dem Problem auf Edge (Windows 10).

Ich habe viel recherchiert und endlich behoben.

Alles, was Sie tun müssen, ist eine neue Middleware erstellen und udpate den Griff Funktion,

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

es bei

im Detail erläutert

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

+0

Ihre Lösung scheint nicht für mich zu arbeiten. –

+0

Weder für mich aus irgendeinem Grund –

2

In meinem Fall war das Problem der Server Zeit. Ich habe irgendwo gelesen, dass, wenn die Serverzeit älter als der Client ist, IE die Cookies löscht. Dann merke ich, dass die Serverzeit hier 8 Stunden zu spät war. Nachdem dies behoben wurde, verschwindet der Token Mismatch Error.

+0

Dies bietet keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. – pableiros