作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
通常您将 ValidateAntiForgeryToken
与 HttpPost
一起使用,如下所示:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult ...
我想在不使用 HttpPost
的情况下使用 ValidateAntiForgeryToken
,以便我可以将 token 作为 URL 参数传递。我怎样才能做到这一点?如果没有 HttpPost
,它会工作吗?如果是,参数的名称是什么?
最佳答案
有了 ASP.NET Core 3.1,事情似乎变得容易多了。
您所要做的就是在 AJAX 调用中传递一个 "RequestVerificationToken"
header :
let token = $('input[name="__RequestVerificationToken"]').val();
let headers = { "RequestVerificationToken": token };
$.ajax({ ..., type: 'GET', headers: headers, ... });
对于 POST 调用, token 可以作为 "__RequestVerificationToken"
字段通过主体(或 FormData)中的对象传递:
let postData["__RequestVerificationToken"] = token;
$.ajax({ ..., type: 'POST', data: postData, ... });
Controller 中的方法可以定义如下:
[ValidateAntiForgeryToken]
public IActionResult GetNotifications()
{
var notifications = _notificationService.GetNotifications();
return Json(notifications);
}
确保 AntiforgeryOptions.HeaderName
和 AntiforgeryOptions.FormFieldName
没有被修改,否则用相应的值更改上面的名称。
关于c# - 如何在 ASP.NET Core 的 HTTP GET 请求中使用 ValidateAntiForgeryToken?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58664612/
我是一名优秀的程序员,十分优秀!