gpt4 book ai didi

c# - 如何在 ASP.NET Core 的 HTTP GET 请求中使用 ValidateAntiForgeryToken?

转载 作者:行者123 更新时间:2023-12-02 19:49:00 25 4
gpt4 key购买 nike

通常您将 ValidateAntiForgeryTokenHttpPost 一起使用,如下所示:

[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.HeaderNameAntiforgeryOptions.FormFieldName 没有被修改,否则用相应的值更改上面的名称。

关于c# - 如何在 ASP.NET Core 的 HTTP GET 请求中使用 ValidateAntiForgeryToken?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58664612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com