清除站点数据“*”:Firefox 和 Chrome 中的不同行为

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

我面临的问题是:

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。

谢谢。

html cookies browser http-headers
1个回答
0
投票

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 来清理浏览器.

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