Chrome与Firefox中Clear-Site-Data "*"行为不一致的对齐方案咨询
核心解决思路
避免使用Clear-Site-Data "*"通配符,改用精确指定存储类型的方式,让Chrome和Firefox的行为对齐。
具体方案
- 将b.mywebsite.com/logout接口返回的响应头从
Clear-Site-Data "*"修改为Clear-Site-Data "cookies"- 此设置只会清除b.mywebsite.com原点下的所有Cookie,包括与a共享的
domain=mywebsite.com类型Cookie,但不会清除a.mywebsite.com独有的Cookie(即那些未设置domain、仅属于a.mywebsite.com的Cookie) - 调整后Chrome的行为会和Firefox一致,仅清理b站点或双方共有的Cookie,不会影响a后续登出请求的Cookie携带
- 此设置只会清除b.mywebsite.com原点下的所有Cookie,包括与a共享的
备选方案(流程调整)
如果暂时无法修改响应头,可以调整登出流程顺序:
- 先调用a.mywebsite.com/logout接口完成a的服务器端登出,再调用b.mywebsite.com/logout接口
- 这样即使Chrome提前清除了主域Cookie,a的登出流程已经完成,不会出现服务器端未处理的问题
差异原因说明
Chrome对Clear-Site-Data "*"的解析范围是整个eTLD+1主域(mywebsite.com),会清除该主域下所有子域的Cookie;而Firefox严格遵循规范,仅清除当前响应对应的精确原点(b.mywebsite.com)下的Cookie及共享主域的Cookie。通过移除通配符、精确指定存储类型,就能消除两者的行为差异。
内容的提问来源于stack exchange,提问作者sam it
相关产品推荐
相关产品推荐

