Ich habe ASP.NET MVC 5 Anwendung mit. Net 4.5.1. Die Anwendung verfügt über mehrere jQuery ajax post-Methode, die Daten an den Server POST. Um zu verhindern, standortübergreifende Anfrage Fälschung (XSRF) i hinzugefügt haben die folgenden in _layout.cshtmlValidateAntiForgeryToken funktioniert nicht asp.net mvc mit Ajax Post
@Html.AntiForgeryToken()
und Javascript, das auch das Token mit allen ajax POST sendet in Httpheader
$(document).ajaxSend(function (event, jqXHR, ajaxOptions) {
if (ajaxOptions.type === 'POST') {
jqXHR.setRequestHeader('__RequestVerificationToken', $('input[name="__RequestVerificationToken"]').val());
}
});
und dann in der Steuereinrichtung Aktionsmethode ich habe
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult Save(MyModel model)
{
//save and return json data
}
jedoch ValidateAntiForgeryToken Ausnahme thorwing
Das erforderliche fälschungssichere Formularfeld "__RequestVerificationToken" ist nicht vorhanden.
Ich habe überprüft, dass __RequestVerificationToken
für jeden Ajax POST zu httpheader hinzugefügt wird.
Ich habe eine andere Anwendung, die mit ASP.NET Core entwickelt wurde, und ich habe die gleiche Funktionalität dort (außer der Header-Name ist RequestVerificationToken
anstelle von __RequestVerificationToken
) und seine Arbeit in ASP.NET Core.
Warum funktioniert das nicht in ASP.NET MVC, wenn Token im Header enthalten ist? Gibt es einen Unterschied ValidateAntiForgeryToken in ASP.NET Core vs ASP.NET MVC 5?
Mögliche Duplikat [jQuery Ajax Anrufe und die Html.AntiForgeryToken hinzufügen ()] (http://stackoverflow.com/questions/4074199/jquery-ajax-calls-and-the-html-antiforgerytoken) – VahidN
@VahidN es ist nicht das gleiche Problem. Ich habe den bereitgestellten Link vorher durchlaufen. – LP13