ASP.Net MVC 使用 ajax post 请求获取 HTTP 400

ASP.Net MVC Getting HTTP 400 with ajax post request

我正在尝试 post 使用 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();
    }

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

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()
},