IE10 处理 cookie 和子域的方式似乎与其他主流浏览器(IE8、IE9、Firefox、Chrome、Safari)不同。
我们将子域广泛用于测试环境,例如:
- user1.devel.example.com
- user2.devel.example.com
- qa.example.com
我们的生产环境位于顶部,例如 example.com(技术上也位于 www.example.com)。
我们天真地使用 phpsetcookie($name, $value, $expires)
函数(未指定显式路径或域)设置 cookie,然后通过将空字符串分配给该值来清除 cookie(当用户注销时)。这一直运行良好,每个独特的子域都使用自己的 cookie。
IE10 现在与所有子域“共享”在 TLD 中设置的 cookie。 我们观察到的最初症状是没有人可以退出子域。我们观察到一些事情:
- 即使它共享该值,也没有子域能够清除 cookie。
- 当 TLD 清除 cookie 时,它也会立即从所有子域中删除。
有没有其他人观察到与 IE10 如何存储/应用相对于子域的 cookie 类似的行为?除了在发送初始 Set-Cookie 标头时明确说明 cookie 适用于哪个域之外,是否有任何解决方法?