.Net Core ValidateAntiForgeryToken 抛出 web api 400 错误
.Net Core ValidateAntiForgeryToken throwing web api 400 error
Visual Studio 2017 with Web Api using .net Core 1.1 我正在使用,但收到 400 错误请求错误。
各方面都出现错误:
- Angular http
- 提琴手
- 邮递员
- SoapUI
- 招摇
ASP.NET Web API POST 请求
上的“400 错误请求”
[HttpPut]
//[ValidateAntiForgeryToken]
public IActionResult Put([FromBody]VeteranInteraction sessionTracker)
{ //.... }
为什么会这样?
ValidateAntiForgeryToken
是问题所在,如果我将其注释掉就可以了。
您需要在每个请求上发送 AntiForgery 令牌作为 cookie 或 http header。
参考documentation here. They have a section如何配置angular js。
您必须在每次请求时发送防伪令牌
var arr = { City: 'Tehran', Age: 25 };
$.ajax({
url: "@Url.Action("SaveAccess", "Access")",
type: 'POST',
data: JSON.stringify(arr),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
beforeSend: function (request) {
request.setRequestHeader("RequestVerificationToken", $("[name='__RequestVerificationToken']").val());
},
success: function (msg) {
alert(msg);
}
});
Visual Studio 2017 with Web Api using .net Core 1.1 我正在使用,但收到 400 错误请求错误。
各方面都出现错误:
- Angular http
- 提琴手
- 邮递员
- SoapUI
- 招摇
ASP.NET Web API POST 请求
上的“400 错误请求”[HttpPut]
//[ValidateAntiForgeryToken]
public IActionResult Put([FromBody]VeteranInteraction sessionTracker)
{ //.... }
为什么会这样?
ValidateAntiForgeryToken
是问题所在,如果我将其注释掉就可以了。
您需要在每个请求上发送 AntiForgery 令牌作为 cookie 或 http header。
参考documentation here. They have a section如何配置angular js。
您必须在每次请求时发送防伪令牌
var arr = { City: 'Tehran', Age: 25 };
$.ajax({
url: "@Url.Action("SaveAccess", "Access")",
type: 'POST',
data: JSON.stringify(arr),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
beforeSend: function (request) {
request.setRequestHeader("RequestVerificationToken", $("[name='__RequestVerificationToken']").val());
},
success: function (msg) {
alert(msg);
}
});