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()
},
我正在尝试 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()
},