在ASP.NET Core 6.0中,如果在使用具有防伪标记保护的POST请求时遇到了IAntiforgery问题,可能需要修改中间件配置。一种解决方法是将以下代码添加到Startup.cs文件的ConfigureServices方法中,以配置IAntiforgery:
services.AddAntiforgery(options =>
{
options.HeaderName = "X-CSRF-TOKEN";
options.SuppressXFrameOptionsHeader = false;
});
以上示例将防伪头文件名更改为X-CSRF-TOKEN。如果需要调试,则可以将SuppressXFrameOptionsHeader选项设置为false。
另一种解决方法是将以下代码添加到Startup.cs文件的Configure方法中,以添加防伪令牌:
app.Use(next => context =>
{
if (string.Equals(context.Request.Path.Value, "/", StringComparison.OrdinalIgnoreCase))
{
var tokens = antiforgery.GetAndStoreTokens(context);
context.Response.Cookies.Append("CSRF-TOKEN", tokens.RequestToken, new CookieOptions() { HttpOnly = false });
}
return next(context);
});
以上示例将防伪令牌添加到名为“CSRF-TOKEN”的cookie中,并将cookie的HttpOnly属性设置为false,以便JavaScript可以从cookie中访问它。