J'ai l'application ASP.NET MVC 5 en utilisant .Net 4.5.1. L'application a plusieurs jQuery ajax post méthode que les données POST au serveur. Pour éviter la falsification de requête intersite (XSRF) j'ai ajouté ce qui suit dans _layout.cshtmlValidateAntiForgeryToken ne fonctionne pas asp.net mvc avec ajax post
@Html.AntiForgeryToken()
et aussi le javascript qui envoie le jeton avec tous les ajax POST HTTPHeader
$(document).ajaxSend(function (event, jqXHR, ajaxOptions) {
if (ajaxOptions.type === 'POST') {
jqXHR.setRequestHeader('__RequestVerificationToken', $('input[name="__RequestVerificationToken"]').val());
}
});
puis dans le contrôleur méthode d'action Je
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult Save(MyModel model)
{
//save and return json data
}
Cependant ValidateAntiForgeryToken thorwing exception
Le champ de formulaire anti-falsification requis "__RequestVerificationToken" est non présent.
J'ai vérifié que __RequestVerificationToken
est ajouté au httpscript pour chaque Ajax POST.
J'ai une autre application qui a été développée en utilisant ASP.NET Core et j'ai la même fonctionnalité là (sauf le nom d'en-tête est RequestVerificationToken
au lieu de __RequestVerificationToken
) et son travail dans ASP.NET Core.
Pourquoi la même chose ne fonctionne pas dans ASP.NET MVC lorsque le jeton est inclus dans l'en-tête? Y at-il une différence ValidateAntiForgeryToken dans ASP.NET Core vs ASP.NET MVC 5?
double possible de [appels Ajax jQuery et le Html.AntiForgeryToken ()] (http://stackoverflow.com/questions/4074199/jquery-ajax-calls-and-the-html-antiforgerytoken) – VahidN
@VahidN ce n'est pas le même problème. J'ai traversé le lien fourni avant. – LP13