我面临的问题是:
Clear-Site-Data "*"
我有两个域,使用两个网络服务器:
a.mywebsite.com
和 b.mywebsite.com
'b'
是 'a'
中的 iframe。
当我单击注销时,我首先在
b.mywebsite.com/logout
上调用注销,然后在 a.mywebsite.com/logout.
上调用注销
b.mywebsite.com
在 html header 中返回 Clear-Site-Data "*"
我注意到在 Firefox 和 Chrome 中,行为是不同的。
在 Chrome 浏览器中: 调用
b.mywebsite.com/logout
并返回 html header Clear-Site-Data "*"
后,它将清除所有 mywebsite.com 中的所有 cookie,包括 a.mywebsite.com
cookie,即使某些 cookie 只属于 'a'.
但是,在 Firefox 中, 它只会清除
b.mywebsite.com
或 a
和 b
之间的常见 cookie。
这会导致 Chrome 用户的 cookie 被清除,但实际上并未在服务器端注销,因为服务器接收到的请求没有任何 cookie。
问题: 有人可以帮助我将
Chrome中的
Clear-Site-Data "*"
行为与 Firefox 保持一致吗?我的目标是 Clear-Site-Data "*"
仅清除 B 站点的 cookie 或常见的 cookie。
谢谢。
Chromium 浏览器中存在一个基于其处理 Clear-Site-Data 标头的方式的错误。由于 Chromium 浏览器中的 Clear-Site-Data 会清除我的网站 1 和 2 中任何子域的所有 Cookie,并且根据文档,它应该只清理子域 Cookie 为了解决这个问题,我做了一个解决方法,从 website1 端向注销页面执行 Ajax 请求,以清理服务器端的会话,而无需获取 Clear-Site-Data 标头来清理浏览器。通过在 iframe 中嵌入来自 website2 的注销页面来响应请求,因为它发送标头以清除站点数据。 在 Chrome 中,这会有效地清除此阶段 website1 和 website2 的所有 cookie。 但在 Firefox 中则不然,因为 Clear-Site-Data 只会清理 website2,为了能够清理 website1 中的 cookie,我向 Firefox 发出了第二次请求以注销页面,但这次要求包含 Clear-Site-Data 来清理浏览器.