【发布时间】:2016-05-03 11:49:42
【问题描述】:
我们有一个网络服务,用户可以登录和退出。 cookie 用于确定用户是否登录。
该服务公开多个“站点”,每个站点都由一个子域标识。例如:
http://customer1.ourservice.com/http://customer2.ourservice.com/
有两种登录方式; “服务范围”或“特定站点”。
“服务范围”登录请求被发送到一个特殊的子域 (http://globalauth.ourservice.com/)。此类登录请求会生成一个 Set-Cookie 标头,如下所示:
Set-Cookie: OUR-COOKIE=<<cookie-value>>;
expires=Wed, 03 May 2017 11:25:58 GMT;
domain=.ourservice.com;
path=/;
httponly
(此处添加了换行符以便于阅读)
domain=.ourservice.com 设置使 cookie 可用于所有子域。
“站点特定”登录请求被发送到站点特定子域。它们会产生一个Set-Cookie 标头,如下所示:
Set-Cookie: OUR-COOKIE=<<cookie-value>>;
expires=Wed, 03 May 2017 11:23:42 GMT;
path=/;
httponly
退出请求始终发送到特定于站点的子域,并且应该删除“横向”登录和“特定于站点”登录的 cookie。
退出请求会导致Set-Cookie 标头,如下所示:
Set-Cookie: OUR-COOKIE=;
expires=Mon, 02 May 2016 11:26:54 GMT;
path=/;
httponly,
OUR-COOKIE=;
expires=Mon, 02 May 2016 11:26:54 GMT;
domain=.ourservice.com;
path=/;
httponly
这里的想法是,站点特定和服务范围的 cookie 都应被清除和过期。
在使用“服务范围”登录时有效,但在使用“站点特定”登录时无效。
网站特定的 cookie 不会从浏览器中删除。
我们如何正确地指示浏览器过期/删除 cookie,无论它是否带有 domain 设置?
【问题讨论】:
标签: .net http cookies self-hosting