ValidateAntiforgeryToken 失败
Posted
技术标签:
【中文标题】ValidateAntiforgeryToken 失败【英文标题】:ValidateAntiforgeryToken failure 【发布时间】:2021-12-02 12:57:22 【问题描述】:我正面临 AntiforgeryToken 验证的问题。
我正在发送这样的数据:
var data =
__RequestVerificationToken: '@GetAntiXsrfRequestToken()',
Id: id,
ResolverGID: resolverGID
;
我正在使用 fetch 方法发送 POST 数据
return fetch(fetchURL, JSON.stringify(data))
.then(async (response) =>
return response.json();
)
.catch(() =>
return false;
);
发送的数据如下所示:
Id: 98
ResolverGID: "XXXX"
__RequestVerificationToken: "CfDJ8EaAHBfZaBJBuxJJzC77RytBbhcw-gV2E_x0mfFVVhCy0BSmE9L5w5jzIW-7CrY_pCClHed5Ez6D3vuDj5rWWyoKr90MSOu-uBMGUuoF9iIXQ9y4vUjY_sxa5fghGEo-Xcp5KC541aGD407Fz9D9itZMeID5jqRv61IRINTSwJH_2yRvgg-BC1cDAriut22Oyw"
但我的方法返回错误 400:错误请求。
当我使用 [IgnoreAntiForgeryToken] 而不是 [ValidateAntiForgeryToken] 属性时它可以工作,但使用防伪令牌验证它不起作用。
当我在模态窗口中使用相同的token函数发送数据时,没问题...
有人可以帮我吗?
谢谢
【问题讨论】:
【参考方案1】:也许我已经找到了解决办法。
[ValidateAntiForgeryToken] 仅在发送 FormData 格式时有效,所以我必须像这样发送数据:
let data = new FormData();
data.append('Id', id);
data.append('ResolverGID', resolverGID);
data.append('__RequestVerificationToken', '@GetAntiXsrfRequestToken()');
然后它按预期工作。
【讨论】:
以上是关于ValidateAntiforgeryToken 失败的主要内容,如果未能解决你的问题,请参考以下文章
如何全局设置 ValidateAntiForgeryToken
Web API 和 ValidateAntiForgeryToken
ValidateAntiForgeryToken 400 错误使用角度 13 和 ASP.NET 核心 5