jQuery CSRF-Token zu allen $ .post () -Anforderungsdaten hinzufügen

Ich arbeite an einer Laravel 5-App, bei der der CSRF-Schutz standardmäßig für alle POST-Anforderungen aktiviert ist. Ich mag diese zusätzliche Sicherheit, also versuche ich, damit zu arbeiten.

Während ein einfaches$.post() Anfrage Ich habe ein @ erhalt'Illuminate\Session\TokenMismatchException' Fehler, da die erforderliche Formulareingabe_token fehlte in den POST-Daten. Hier ist ein Beispiel für eine $ .post-Anfrage:

var userID = $("#userID").val();
$.post('/admin/users/delete-user', {id:userID}, function() {
// User deleted
});

Ich habe mein CSRF-Token als Meta-Feld in meinem Header gespeichert und kann leicht darauf zugreifen, indem ich Folgendes verwende:

var csrf_token = $('meta[name="csrf-token"]').attr('content');

Ist es möglich, dies an die json-Daten für alle ausgehenden @ anzuhänge$.post() Anfragen? Ich habe versucht, Header zu verwenden, aber Laravel schien sie nicht zu erkennen -

var csrf_token = $('meta[name="csrf-token"]').attr('content');
alert(csrf_token);
$.ajaxPrefilter(function(options, originalOptions, jqXHR){
    if (options['type'].toLowerCase() === "post") {
        jqXHR.setRequestHeader('X-CSRFToken', csrf_token);
    }
});

Antworten auf die Frage(12)

Ihre Antwort auf die Frage