Chrome中的响应Cookie中缺少域名

时间:2018-01-16 21:44:03

标签: cookies asp.net-core-2.0

是否有理由将cookie从Cookie中排除,仅限Chrome?

我有一个与IIS 8.5一起托管的Asp.Net Core 2.0应用程序,它正在使用here所述的cookie身份验证。它在Firefox(见下图),IE11和Edge中完美运行 - 在响应中返回域并按预期创建cookie。所有后续的身份验证和传递都可以在这些浏览器中使用。

Response cookie in Firefox

但是,在Chrome中,响应中的Cookie中缺少Domain(请参见下图)。后续请求不会附加cookie,因此服务器不会收到它,并认为用户必须通过身份验证。

Response cookie in Chrome

特别奇怪的是,当我在Chrome中搜索Cookie时,我确实找到了Cookie(见下文)。

Cookie in Chrome

我最初使用的是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身份验证机制。

0 个答案:

没有答案