Ho trovato molti esempi che dimostrano come aggiungere un AntiForgeryToken
alla chiamata Ajax
per il metodo di invio POST. Il mio bisogno, come suggerisce il titolo, è di inviare un modulo NOT tramite la chiamata ajax
. Invece, sto semplicemente usando la funzione jQuery submit()
.Aggiunta di AntiForgeryToken al modulo non Ajax Invia
Quello che ho nel mio file vista rasoio è la seguente (Nota: sto usando stringa HTML letterale, perché questo particolare DOM ha bisogno di essere collegato dinamicamente ad un elemento separato in un momento successivo):
var html =
"<form id='exportPdfForm' action='" + exportUrl + "' method='post'>" +
"<input type='hidden' id='exportContent'>" +
"<input type='hidden' id='__RequestVerificationToken' value='@Html.AntiForgeryToken()'>" +
"</form>";
E, ovviamente, sto utilizzando la seguente jQuery per inviare questo modulo:
$("#exportPdfForm").submit();
Inoltre, utilizzando il DOM Explorer posso vedere il valore AntiForgeryToken
è posizionato correttamente:
Tuttavia, quando invio effettivamente il modulo, si verifica ancora l'errore The required anti-forgery form field "__RequestVerificationToken" is not present
. Ho controllato diversi altri Q & A ma non riesco a trovare nulla che possa far luce sul mio problema.
Mi manca qualcosa di ovvio o qualcosa di sbagliato qui?
EDIT (Soluzione)
Assegnazione del __RequestVerificationToken
all'attributo name
lo risolverà:
<input type='hidden' name='__RequestVerificationToken' value='...'>