【问题标题】:ValidateAntiforgeryToken failureValidateAntiforgeryToken 失败
【发布时间】: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函数发送数据时,没问题...

有人可以帮我吗?

谢谢

【问题讨论】:

    标签: .net-5 antiforgerytoken .net-6.0


    【解决方案1】:

    也许我已经找到了解决办法。

    [ValidateAntiForgeryToken] 仅在发送 FormData 格式时有效,所以我必须像这样发送数据:

    let data = new FormData();
                    data.append('Id', id);
                    data.append('ResolverGID', resolverGID);
                    data.append('__RequestVerificationToken', '@GetAntiXsrfRequestToken()');
    

    然后它按预期工作。

    【讨论】:

      猜你喜欢
      • 2015-02-08
      • 2011-01-05
      • 2018-11-05
      • 2018-07-17
      • 2017-12-07
      • 1970-01-01
      • 2014-04-24
      • 2012-07-13
      • 1970-01-01
      相关资源
      最近更新 更多