业务需求
在工作中需要一个域名(http://a.a.com)下给两个域名(https://a.b.com,http://b.b.com)写入cookie,发现的问题是一个可以写入成功,一个写入不成功
下面出现的现象
1、A域名写入B域名(成功)
2、A域名写C域名(失败)提示:(尝试通过Set-Cookie标头设置Cookie的操作被禁止了,因为此标头具有”Secure“属性但不是通过安全连接接收的。)
总结问题
因为防止(WEB安全漏洞-CSRF)谷歌在Chrome 80稳定版中和以后版本添加了SameSite强制执行限制,默认情况下SameSite=None更改为了SameSite=Lax并且浏览器做了仅针对 HTTPS 域名才支持 SameSite=None 配置。所以如果你要设置 SameSite=None 的话,则必须还要携带 Secure 属性才行。
SameSite=None
:无论是否跨站都会发送 CookieSameSite=Lax
:允许部分第三方请求携带 CookieSameSite=Strict
:仅允许同站请求携带 Cookie,即当前网页 URL 与请求目标 URL 完全一致
以上限制造成了,http域名给http域名写cookie不成功原因
目前受影响浏览器为:Chrome版本大于80
不受影响浏览器为:Microsoft Edge、Chrome版本小于80
参考:
https://zhuanlan.zhihu.com/p/397317451