是否有理由将cookie从Cookie中排除,仅限Chrome?
我有一个与IIS 8.5一起托管的Asp.Net Core 2.0应用程序,它正在使用here所述的cookie身份验证。它在Firefox(见下图),IE11和Edge中完美运行 - 在响应中返回域并按预期创建cookie。所有后续的身份验证和传递都可以在这些浏览器中使用。
但是,在Chrome中,响应中的Cookie中缺少Domain
(请参见下图)。后续请求不会附加cookie,因此服务器不会收到它,并认为用户必须通过身份验证。
特别奇怪的是,当我在Chrome中搜索Cookie时,我确实找到了Cookie(见下文)。
我最初使用的是Cookie的会话过期,但正如您在上面的屏幕截图中所看到的,我将其更改为使用日期,但这对此问题没有影响。
在Startup.cs中我有:
app.UseCookiePolicy(new CookiePolicyOptions
{
Secure = CookieSecurePolicy.None,
MinimumSameSitePolicy = SameSiteMode.Lax
});
app.UseAuthentication();
在AuthenticationController.cs中我有:
ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims, "cookie");
await HttpContext.SignInAsync(
CookieAuthenticationDefaults.AuthenticationScheme,
new ClaimsPrincipal(claimsIdentity),
new AuthenticationProperties() {
ExpiresUtc = DateTime.Now.AddMonths(6),
IsPersistent = true
});
值得注意的是,此应用程序是通过Canvas学习管理系统中的iframe进行访问的。
非常感谢任何帮助。
我在此上下文中创建了一个独立于cookie身份验证的基本cookie。
CookieOptions options = new CookieOptions();
options.Expires = DateTime.Now.AddMonths(6);
Response.Cookies.Append("TestCookie", "this is the cookie value", options);
创建该cookie时也出现了同样的问题,因此看起来这个问题并不是特定于cookie身份验证机制。