2015-10-25 9 views
7

Der entsprechende Code ist unten dargestellt:Laravel 5.1 XMLHttpRequest AJAX POST TokenMismatchException

var csrfToken = "{{ csrf_token() }}"; 
xmlhttp.open("POST", "/internal/v1/create/strategy", true); 
xmlhttp.setRequestHeader('X-CSRF-TOKEN', csrfToken); 
postString = "param1=" + varOne + "&param2=" + varTwo; 
xmlhttp.send(postString); 

Ich habe versucht, dies jetzt für Stunden, um herauszufinden, ich habe ehrlich gesagt keine Ahnung, was an diesem Punkt zu tun. Beachten Sie, dass bei Verwendung der Formularmethode alles einwandfrei funktioniert. Ich habe auch versucht die CSRF-Token als Parameter in der postString Senden: „_token =“ + csrfToken

+0

Haben Sie es mit 'X-XSRF-TOKEN' versucht? – Iamzozo

+0

Haben Sie versucht, die Post-Anfrage zu debuggen, um zu sehen, ob die Header tatsächlich übertragen werden? Ich kann auch nicht sehen, wie Sie Ihr xmlhttp-Objekt instanziieren. – Tim

+0

Das xmlhttp-Objekt wird normalerweise früher im Code instanziiert, aber ich konnte den Code reparieren. Es gab hier zwei Probleme, in der Datei config/session.php wurde die Domain auf null gesetzt, ich habe irgendwo gelesen, dass das Setup eingerichtet werden muss oder es verursacht Fehler, also habe ich das gemacht, aber zusätzlich musste ich den Inhalt hinzufügen -Typ als URL-codierte Form. – jrgilman

Antwort

2

Das Problem über eine zweiteilige Lösung aufgelöst wurde:

Es war notwendig, um die ‚Content- hinzufügen Typ‘Header für die Laravel Lage sein, die POST'ed Parameter zu lesen:

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

Zusätzlich kann in der config/session.php Datei war es notwendig, auch den Punkt‚Domain‘Variable in Richtung der tatsächlichen Domain von die Anwendung, anstatt den Standardwert von null. Dies ist wahrscheinlich etwas, das während der Erstinstallation gemacht wurde, aber ich muss es vergessen haben.

Nach diesen beiden Änderungen würde die POST-Anforderung erfolgreich über AJAX-Aufrufe ausgeführt werden.

Verwandte Themen