Ich habe mir Beispiele dafür angeschaut, wie man das auf SO macht, und soweit ich das beurteilen kann, habe ich alle Beispiele ausprobiert, die ich bisher erfolglos finde. Ich habe versucht, einige der Implementierungen zu meinem Szenario zu ändern, aber dies ist bisher auch gescheitert.AJAX ValidateAntiForgeryToken ohne Formular an MVC messen Aktionsmethode
Ich habe dies auf meiner Seite in _layout.cshtml so immer habe ich ein Token verfügbar:
<form id="__AjaxAntiForgeryForm" action="#" method="post"> @Html.AntiForgeryToken()</form>
ich diese Methode auch in meiner JavaScript utils-Datei:
AddAntiForgeryToken = function (data) {
data.__RequestVerificationToken = $('#__AjaxAntiForgeryForm input[name=__RequestVerificationToken]').val();
return data;
};
Das ist alles Arbeiten wie erwartet und ich bekomme ein Anti-Fälschungs-Token. Mein Istbuchung Code ist:
myPage.saveData = function() {
var saveUrl = '/exercises/PostData';
var myData = JSON.stringify(myPage.contextsArrays);
$.ajax({
type: 'POST',
async: false,
url: saveUrl,
data: AddAntiForgeryToken({ myResults: myData }),
success: function() {
alert('saved');
},
dataType: 'json',
contentType: "application/json; charset=utf-8"
});
};
Meine Aktion-Methode wie folgt aussieht:
[HttpPost, ValidateAntiForgeryToken, JsonExceptionFilter]
public JsonResult PostData(List<ResultsDc> myResults)
{
return Json(_apiClient.SubmitResults(myResults));
}
Ich habe dies getestet mit den verschiedenen Implementierungen Ich habe versucht, und die Antwort ist immer:
Ich poste kein Formular, es ist nur ein Array von Daten, aber die Überprüfung der Daten, die tatsächlich gebucht werden, sieht der Json nicht richtig aus (es ist alles codiert), aber der __RequestVerificationToken-Parametername ist re und der Token-Wert ist ebenfalls vorhanden.
Ich bin ziemlich verwirrt von all dem im Moment und kann nicht den richtigen Weg finden, um das Token zu senden, so dass meine MVC-Aktion aufgerufen wird. Wenn ich das ValidateAntiForgeryToken
Attribut entferne und JSON.stringify(myPage.contextsArrays);
als die Daten habe, sieht der JSON richtig (unverschlüsselt) aus und es bildet gut ab.
Wie bekomme ich dieses Token ordnungsgemäß ohne ein Formular?
Ich bin verwirrt. Wenn Sie das nicht gesehen haben und Ihre Antwort unten ist jemand elses (Ich habe diesen Code auf anderen Antworten auf SO gesehen) Warum versuchen Sie, etwas zu beantworten, was Sie nicht verstehen? – Jammer
Es ist nicht notwendig, Attribute zu trennen ... – Jammer