PHP session_start()与域名前缀点引发重复PHPSESSID Cookie问题咨询
我来帮你理清楚为什么会出现两个PHPSESSID Cookie的情况,本质是Cookie域匹配规则和Magento 2会话管理逻辑共同作用的结果:
session_start()的默认Cookie行为
当你直接调用session_start()而没有显式指定session.cookie_domain配置时,PHP会生成一个无Domain属性的Cookie。浏览器接收到后,会自动将其绑定到当前访问的精确域名(也就是dev.magento2.com),这个Cookie只会在访问完全匹配该域名的页面时才会被发送。Magento 2的会话Cookie配置
Magento 2为了支持子域名共享会话(比如你可能有store.dev.magento2.com这类子域名站点),会主动将会话Cookie的Domain设置为带前置点的.dev.magento2.com。根据Cookie规范,带前置点的域表示该Cookie对主域名及其所有子域名都有效,但关键在于:浏览器会把dev.magento2.com和.dev.magento2.com视为两个不同的域属性。浏览器的Cookie唯一性判断逻辑
浏览器判断两个Cookie是否为同一个的依据是名称、域、路径三者的组合。虽然两个Cookie的名称都是PHPSESSID,但它们的域属性不同(一个是精确域名,一个是带点的泛域名),所以浏览器会将它们当作独立的Cookie存储,而不是覆盖原有Cookie。你提到现代浏览器“本不应在意前置点”,其实是指RFC 6265规范后,浏览器对带点域的解析逻辑有所调整,但核心的Cookie唯一性判定规则并没有改变——只要域属性的字符串不一样,就会被视为不同的Cookie。
内容的提问来源于stack exchange,提问作者JohnyFree

