202 votes

inclure un antiforgerytoken dans un post ajax ASP.NET MVC

J'ai des problèmes avec l'AntiForgeryToken avec ajax. J'utilise ASP.NET MVC 3. J'ai essayé la solution dans Les appels Ajax de jQuery et la fonction Html.AntiForgeryToken() . En utilisant cette solution, le jeton est maintenant passé :

var data = { ... } // with token, key is '__RequestVerificationToken'

$.ajax({
        type: "POST",
        data: data,
        datatype: "json",
        traditional: true,
        contentType: "application/json; charset=utf-8",
        url: myURL,
        success: function (response) {
            ...
        },
        error: function (response) {
            ...
        }
    });

Lorsque je retire le [ValidateAntiForgeryToken] juste pour voir si les données (avec le jeton) sont transmises comme paramètres au contrôleur, je peux voir qu'elles sont transmises. Mais pour une raison quelconque, l'attribut A required anti-forgery token was not supplied or was invalid. Le message s'affiche toujours lorsque je remets l'attribut.

Des idées ?

EDIT

L'antiforgerytoken est généré dans un formulaire, mais je n'utilise pas d'action de soumission pour le soumettre. Au lieu de cela, j'obtiens simplement la valeur du jeton en utilisant jquery et j'essaie ensuite de l'envoyer par ajax.

Voici le formulaire qui contient le jeton, et qui se trouve en haut de la page principale :

<form id="__AjaxAntiForgeryForm" action="#" method="post">
    @Html.AntiForgeryToken()
</form>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X