cookie的读写设计和浏览器控制台Application设计不一致?

163 阅读1分钟

问题描述

在做需求联调的时候发现,用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设计不一致?