【问题标题】:ASP.Net MVC Getting HTTP 400 with ajax post requestASP.Net MVC 使用 ajax 发布请求获取 HTTP 400
【发布时间】:2021-09-12 11:11:52
【问题描述】:

我正在尝试将一些使用 ajax 的简单数据从我的视图发布到控制器。当我将它切换到 HttpGet 时,它工作正常,但是在尝试 httppost 时,我总是得到错误 400。 这是我的视图代码:

@Html.Hidden("postSettings", Url.Action("MethodName", "MyController"))
$.ajax({
     url: $("#postSettings").val(),
     type: "POST",
     data: JSON.stringify(11),
     dataType: "json",
     contentType: "application/json",
     success: function (_result) {
         console.log("success")
     },
     error: function (e) {
         console.log(e);
         }
});

我的控制器中的代码:

    [HttpPost]
    public IActionResult MethodName(object value)
    {
        return Ok();
    }

【问题讨论】:

    标签: asp.net ajax model-view-controller


    【解决方案1】:

    我没有注意到我应用了全局过滤器

    services.AddMvc(options =>
            {
                options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
            });
    

    ,添加 CSRF 令牌解决了这个问题。 我刚刚将此代码添加到我的视图中:

    <script type="text/javascript">
        function gettoken() {
            var token = '@Html.AntiForgeryToken()';
            token = $(token).val();
            return token;
        }
    </script>
    

    对于 ajax 请求:

    headers: {
        RequestVerificationToken: gettoken()
    },
    

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      相关资源
      最近更新 更多