由于第三方 cookie 弃用,我相应地更新了我的应用程序的一些 cookie,以便使用 CHIPS 进行“分区”。
以我为例,受影响的 cookie 是使用 JavaScript 设置的,如下所示:
function setPartitionedCookie() {
document.cookie =
"cookie=delicious; Max-Age=86400; Path=/; Secure; SameSite=None; Partitioned;";
}
我正在尝试通过将过期日期(
Expires
属性)设置为过去的日期来使用JavaScript删除此cookie,正如Stack Overflow上的各种问题中所建议的那样,请参阅例如“使用JavaScript清除所有cookie” .Secure
和
Partitioned
属性,这不适用于分区 cookie,至少在 Chrome 版本 123 中是这样:
function deletePartitionedCookie() {
/* "Secure" and "Partitioned" attributes are required to delete the partitioned cookie in Chrome */
// document.cookie = "cookie=; Expires=Thu, 01 Jan 1970 00:00:00 UTC; Secure; Partitioned;"; // this does work in Chrome
document.cookie = "cookie=; Expires=Thu, 01 Jan 1970 00:00:00 UTC;"; // this does not work in Chrome
}
从“无法从javascript中删除cookie”的答案中,我发现有时还需要设置相应的
Path
和Domain
属性。但是,没有解释为什么以及在什么情况下需要这样做。
此行为是设计使然,还是有规范?这可能是 Chrome 中的一个错误吗?
删除“分区cookies”的正确方法是什么?
由于 Firefox 和 Safari 不支持
Partitioned
属性,因此这还不是 的问题。我还没有机会测试 Edge 中的行为。
我不确定代码片段中的示例是否有效,所以我创建了这个 Glitch 来测试它:
https://delete-partitioned-cookies.glitch.me/
删除分区 Cookie 需要主机密钥和分区密钥来映射到正确的 Cookie,因此需要
Partition
和 Secure
标签来删除它