Chrome地址栏锁图标显示Cookie但DevTools>Application面板不显示?
嘿,这个问题我之前也碰到过,大概率不是Chrome的Bug,而是两个入口的展示逻辑设计不同导致的,咱们一步步拆解原因:
httpOnly Cookie的隐藏机制:地址栏锁图标里的Cookie菜单会展示当前站点的所有Cookie,包括标记为
httpOnly的;但DevTools的Application面板默认是不显示httpOnly Cookie的!你可以看看面板顶部有没有一个「Show httpOnly」的复选框,勾选它之后,那些httpOnly的Cookie就会出来了——这是最常见的“消失”原因,很多人第一次用都没注意到这个选项。DevTools的上下文选择问题:Application面板顶部有个下拉菜单,用来选择当前要查看的页面或iframe。如果你不小心选中了页面里的某个子iframe,而你关注的Cookie是属于主域名的,那这个iframe对应的Cookies区域自然是空的。但地址栏锁图标展示的是整个站点的所有Cookie,不受当前DevTools上下文的影响,所以会显示出来。
Secure Cookie的协议匹配:如果你的Cookie标记为
Secure,它只会在HTTPS页面下被正常展示和发送。不过既然你能看到地址栏的锁图标,说明当前页面是HTTPS,这个原因可能性较低,但可以确认下Cookie的属性是否和当前页面协议匹配。DevTools状态异常的小概率情况:虽然你试过刷新和重启Chrome,但有时候DevTools的会话会残留一些奇怪的状态。你可以试试右键点击地址栏的刷新按钮,选择「清空缓存并硬性重新加载」,或者打开DevTools的设置(按F1),选择「Restore defaults and reload」重置DevTools的配置,说不定能解决一些偶发的显示问题。
总结一下:这种显示差异是设计逻辑的不同,不是Bug。优先检查Application面板的「Show httpOnly」复选框和上下文选择,基本就能找到原因啦。
内容的提问来源于stack exchange,提问作者Dan




