在 ASP.NET Core 中不通过 HTTPS 设置 cookie

问题描述 投票:0回答:1

我有两个微服务。一是为了身份。我正在尝试设置身份验证 cookie,并且我有这个中间件:

app.UseCookiePolicy(new CookiePolicyOptions
{
    MinimumSameSitePolicy = SameSiteMode.None,
    Secure = CookieSecurePolicy.None,
    HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.None
}); 

还有这项服务:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        options.Cookie.HttpOnly = true;
        options.Cookie.SameSite = SameSiteMode.None;
        options.Cookie.SecurePolicy = CookieSecurePolicy.None;
        options.Cookie.IsEssential = true;
    });

浏览器也会抛出此警告:

所以我想知道是否可以不通过 HTTPS 设置 cookie。

asp.net-core cookies identityserver4 samesite
1个回答
3
投票

需要通过Https设置cookie,否则无法工作。

这是因为 Samesite cookie 功能要求在 cookie 到达浏览器时通过 HTTPs 完成。

参见 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite

也就是说:

SameSite=None 的 Cookie 现在还必须指定安全属性 (它们需要安全上下文/HTTPS)。

为了补充这个答案,我写了一篇博客文章,更详细地介绍了这个主题:调试 cookie 问题

© www.soinside.com 2019 - 2024. All rights reserved.