Ho cercato esempi su come farlo in SO e per quanto posso dire ho provato tutti gli esempi che riesco a trovare senza successo fino ad ora. Ho provato a modificare alcune delle implementazioni nel mio scenario, ma questo ha finora fallito.AJAX Posting ValidateAntiForgeryToken senza modulo per MVC Metodo di azione
ho questo sulla mia pagina in _layout.cshtml così ho sempre un gettone disponibili:
<form id="__AjaxAntiForgeryForm" action="#" method="post"> @Html.AntiForgeryToken()</form>
Ho anche questo metodo nel mio JavaScript utils del file:
AddAntiForgeryToken = function (data) {
data.__RequestVerificationToken = $('#__AjaxAntiForgeryForm input[name=__RequestVerificationToken]').val();
return data;
};
Questo è tutto funziona come previsto e ottengo un token anti-contraffazione. Il mio codice distacco attuale è:
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"
});
};
Il mio metodo di azione simile a questa:
[HttpPost, ValidateAntiForgeryToken, JsonExceptionFilter]
public JsonResult PostData(List<ResultsDc> myResults)
{
return Json(_apiClient.SubmitResults(myResults));
}
Ho testato questo con le varie implementazioni ho cercato e la risposta è sempre:
Non sto postando un modulo è solo una matrice di dati ma controllando i dati effettivamente pubblicati, il Json non sembra corretto (è tutto codificato) ma il nome del parametro __RequestVerificationToken è il e anche il valore del token è presente.
Sono abbastanza confuso da tutto questo al momento e non riesco a trovare il modo corretto di inviare il token in modo che venga richiamata la mia azione MVC. Se io rimuovere l'attributo ValidateAntiForgeryToken
e hanno JSON.stringify(myPage.contextsArrays);
come i dati JSON sembra corretto (in chiaro) e si associa bene.
Come faccio ad avere questo token inviato correttamente senza un modulo?
Sono confuso. Se non hai visto questo e la tua risposta qui sotto è qualcun altro (ho visto quel codice su altre risposte su SO) perché stai cercando di rispondere a qualcosa che non capisci ?? – Jammer
Non è necessario separare gli attributi ... – Jammer