08 The required antiforgery cookie .AspNetCore.Antiforgery.SHBLLax8hUM is not present问题排查
08 Abp The required antiforgery cookie .AspNetCore.Antiforgery.SHBLLax8hUM is not present问题排查
问题描述
Vue前端提交表单修改数据时,后台API服务报 The required antiforgery cookie .AspNetCore.Antiforgery.SHBLLax8hUM is not present 错误。
该错误由CSRF/XSRF&反伪造系统导致。
问题排查
跟踪请求:
可以看到服务端是有返回AspNetCore.Antiforgery.SHBLLax8hUM
cookie的,由于服务端默认设置Cookie的属性为samesite=strict
,且我提交的表单的请求是跨域请求,导致Cookie无法正确设置。
解决方法
在 ConfigureServices
方法中设置一下配置:
// 设置 ASP.NET.CORE Anti Forgery cookie 可以跨域
Configure<AntiforgeryOptions>(options =>
{
options.Cookie.SameSite = SameSiteMode.None; // 指示客户端应禁用同一站点限制
options.Cookie.HttpOnly = true; // 设置该Cookie只能用于HTTP请求,客户端无法访问
options.Cookie.IsEssential = true;
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
options.Cookie.Expiration = TimeSpan.FromDays(3650); // 设置cookie的有效期为10年
});