我们在我们的应用程序中发现了一个问题,即 Mac 上的 Safari 从已注销的会话中随机重新创建登录 cookie。
我在这里有一个带有这种行为的提琴手档案。请注意,已从中删除了一些内容以使其更易于获取,但没有删除任何设置 cookie 或任何内容的内容 - 仅重复请求 3-8。
我会告诉你运行顺序
- 请求 1:用户通过调用 /logout.aspx 注销 - Set-Cookie 返回设置 cookie 到期日期为 1999
- 请求 2-8:用户刷新登录页面,向 root 或 /res/en-US/s.js 发送调用 - 没有 cookie 发送到服务器或接收回,并且访问被拒绝。我已经从日志中删除了很多这种性质的请求,因为它们很无聊
- 请求 9:请求 /res/en-US/s.js - Hv3 身份验证 cookie 神秘地再次出现!笏。没有设置饼干!WTFF!
- 请求 10+:现在 cookie 重新出现,站点再次登录用户
在 Safari 中检查时,cookie 看起来像
<dict>
<key>Created</key>
<real>259603523.26834899</real>
<key>Domain</key>
<string>.mysite.dev</string>
<key>Expires</key>
<date>2010-03-24T16:05:22Z</date>
<key>HttpOnly</key>
<string>TRUE</string>
<key>Name</key>
<string>.Hv3</string>
<key>Path</key>
<string>/</string>
</dict>
需要注意的一件事是,在 Safari 中,cookie 域是 .mysite.dev 而不是 mysite.dev(这是 web.config 中指定的 cookie 域) - 但是,鉴于请求 2-8 中拒绝访问,它看起来像cookie 已过期 OK。如果您在 2-8 期间查看浏览器中的 cookie 列表,则 .Hv3 cookie 不存在。
这是我们的错误还是 Safari 的?我能做些什么来阻止它的发生?