在最新的模板和库中使用了httpsonly标志。我怎么能把它关掉?
同样的问题已经过时,并且没有完整的配置示例:
答案 0 :(得分:6)
为了在使用Identity时配置应用程序cookie,您可以使用Startup的ConfigureServices
内的ConfigureApplicationCookie
method:
// add identity
services.AddIdentity<ApplicationUser, IdentityRole>();
// configure the application cookie
services.ConfigureApplicationCookie(options =>
{
options.Cookie.SameSite = SameSiteMode.None;
});
由于Identity本质上是在底层添加cookie身份验证,因此配置操作与配置cookie身份验证时通常传递给AddCookie()
的操作相同。只是因为AddIdentity()
负责为您设置身份验证,ConfigureApplicationCookie
提供了一种方法来调整Cookie身份验证选项。
答案 1 :(得分:6)
@poke的回答没有帮助我将值设置为SameSiteMode.None
,至少没有在ASP.NET core 2.1中设置。
您在配置应用程序Cookie中设置的任何值都会被cookie policy middleware的MinimumSameSitePolicy
设置覆盖。
这可以防止覆盖,请将MinimumSameSitePolicy
扩展名的UseCookiePolicy
设置为SameSiteMode.None
。
app.UseCookiePolicy(new CookiePolicyOptions
{
MinimumSameSitePolicy = SameSiteMode.None
});
然后在ConfigureServices
方法的AddCookie扩展名中设置实际的相同站点值
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options => options.Cookie.SameSite = SameSiteMode.None;
});
答案 2 :(得分:0)
对于我在asp.net core 3.1中的情况,结合了两件事就可以了
services.ConfigureApplicationCookie(options =>
{
options.Cookie.SameSite = SameSiteMode.Unspecified;
});
services.AddAntiforgery(opts => {
opts.Cookie.SameSite = SameSiteMode.Unspecified;
});