Ich arbeite mit Spring 3.x und CSRF. Zur Zeit des Jquery-Aufrufs müssen die Token im requesetHeader gesetzt werden, da sonst die CSRF-"null"-Ausnahme ausgelöst wird. Daher habe ich versucht, die Werte in der JavaScript-Funktion zu erhalten und konnte den Token-Wert und Header-Wert innerhalb der Javascript-Funktion erhalten. Danach habe ich versucht, den Token mit folgenden Funktionen zu setzen, aber keiner von ihnen hat funktioniert.
Methode 1:
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$.post(
url,
beforeSend: function(xhr){
xhr.setRequestHeader("Content-Type","application/json");
xhr.setRequestHeader("Accept","application/json");
},
$(testform).serialize(),
function(data) {
async: false;
}).done(function(data){
});
Methode 2:
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$.post(
url,
headers: {header,token},
$(testform).serialize(),
function(data) {
async: false;
}).done(function(data){
});
Bitte schlagen Sie vor oder helfen Sie mir dabei.
Aktualisiert mit folgendem Code:
Methode 3:
Aus dem unten stehenden Code kann ich den Controller erfolgreich aufrufen, aber die Antwort wird nicht an eine andere JSP weitergeleitet. Fehlt mir etwas im unten stehenden Code, bitte beraten Sie mich.
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$.post(
url,
{_csrf_header : header, _csrf : token},
$(testform).serialize(),
function(data) {
async: false;
}).done(function(data){
});