ajax 中的防伪令牌 post 请求 ASP.NET MVC 抛出 500(内部服务器错误)

Antiforgerytoken in ajax post request ASP.NET MVC throwing 500 (Internal Server Error)

提问人:Warda 提问时间:10/10/2023 更新时间:10/12/2023 访问量:55

问:

我在使用 ajax 的 AntiForgeryToken 时遇到了问题。我正在使用 ASP.NET MVC 3。我在jQuery Ajax调用和Html.AntiForgeryToken()中尝试了该解决方案。使用该解决方案,令牌现在正在传递,但我总是得到 500(内部服务器错误),我尝试了很多解决方案,但在使用 [ValidateAntiForgeryToken] 时我无法达到其操作方法,

这是我的代码:

$("#headerNext").click(function () {
             var form = $('#__AjaxAntiForgeryForm');
             var token = $('input[name="__RequestVerificationToken"]', form).val();

            $.ajax({
               // context: this,
                type: "POST",
                url: "/Survey/LinkedSurveyAsJson",
                data: "{__RequestVerificationToken: "+ token + " ,id:'@Model.CustomerSurveyId',lang:'@(Model.Language == "ar" ? "ar" : "en")'}",
                //contentType: "application/json; charset=utf-8",
                contentType: 'application/x-www-form-urlencoded; charset=utf-8',
                success: function (response) {
                    if (response) {
                        var data = $.parseJSON(response);
                        $('#SurveyQuestions').html(templateQuestion(data));
                        console.log(data);
                        $('#headerText').hide();
                        $('#headerNext').hide();
                        $('#next').show();

                    }
                },
                error: function (response) {
                    showErrorMessage(response.Message);
                    document.getElementById(bid).disabled = false;
                }
            });
        });
 using (Html.BeginForm("Index", "Survey", FormMethod.Post, new { id = "__AjaxAntiForgeryForm", enctype = "multipart/form-data" }))
        {
            @Html.AntiForgeryToken()
            }
这就是动作方法的样子

        [HttpPost]
        [ValidateAntiForgeryToken]
        public JsonResult LinkedSurveyAsJson(Guid? id, Guid? SurveyQuestionResponseId, Guid? LinkedSurveyQuestionId, Guid? SurveyQuestionId, Guid? SurveyId, string btnClicked, string ChoiceInputValue, string lang = "")
        { 
            CustomerSurveyViewModel customerSurvey = null;
return Json();
        }

enter image description here

javascript ajax asp.net-mvc-4 剃刀

评论


答:

0赞 Warda 10/12/2023 #1

https://stackoverflow.com/a/30160504/6216322上面的链接对这个问题有正确的答案,它对我有用。