问题描述
在做需求联调的时候发现,用https的链接登录状态验证正常,但是在http协议下,会出现set cookie失败的情况,导致登录状态验证失败。
查看控制台,报错如下:提示【会覆盖具有“Secure”属性的cookie】
于是在控制台下清空了当前域名下的所有cookie。
示例如下:
但是清空当前域名下的所有cookie后还是会提示【会覆盖具有“Secure”属性的cookie】。 😵😵😵😵😵😵😵😵😵 此时就想不通了,都没cookie,还会存在会覆盖具有“Secure”属性的cookie????
分析
set cookie 的时候,是没有区分协议的,domain字段是不带协议信息的,
所以种下的cookie,是http、https的链接共享的。
但是当我们在控制台下去清除某域名下的cookie的时候,此时是区分协议的,如图:
所以,当在http协议链接下去打开控制台去清除cookie的时候,只是清楚的http下的cookie,此时https下的cookie依旧存在,并且这个cookie带了“Secure”属性,所以才会提示【会覆盖具有“Secure”属性的cookie】
结论
cookie在种入、携带的时候是不会区分协议的,但是在控制台打开显示的时候是区分协议显示的,所以会导致有一些混乱吧,感觉像是设计缺陷? cookie的读写设计和浏览器控制台Application设计不一致?