我如何注入 AntiForgery 令牌?

How can i inject the AntiForgery token?

在我的 _Layout.cshtml

中使用
@using Microsoft.AspNetCore.Antiforgery
@inject IAntiforgery AntiForgery;

我希望 RequestVerificationToken 出现在请求 headers 中。

但是没有达到预期。在检查请求 headers 时, RequestVerificationToken 根本不存在。

这是否与 net Core 3.0 有某种关系,还是我遗漏了什么?

如果您使用 ajax 查询发送 antiforgeryToken,请按照以下步骤操作。否则 RequestVerificationToken 将自动添加到 formData

将以下内容添加到您的 cshtml 和 js

@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
@functions{
    public string GetAntiXsrfRequestToken()
    {
        return Xsrf.GetAndStoreTokens(Context).RequestToken;
    }
}

<form>
      <input type="hidden" id="RequestVerificationToken"
               name="RequestVerificationToken" value="@GetAntiXsrfRequestToken()" />
</form>

将此添加到您的 XMLHttpRequest 实例

xhttp.setRequestHeader("RequestVerificationToken", 
                    document.getElementById('RequestVerificationToken').value);