【问题标题】:IE8 Won't Always Edit Cookie ValueIE8 不会总是编辑 Cookie 值
【发布时间】:2011-07-26 12:51:00
【问题描述】:

我遇到了一个问题,我的网站登录在 IE8 中无法始终如一地工作。它在 Firefox/Chrome/Safari 中运行良好,但在 IE8 中运行良好。

第一次登录时一切正常。注销并尝试重新登录后,它通常会失败一段时间。它最终会在身份验证后重定向到登录页面。

所以认证成功,它返回true,但似乎IE8不接受我们通过返回设置的会话ID的新值:

Set-Cookie SESSIONID=........;路径=/

在响应头中。但显然,这适用于清晰的缓存,我可以正常工作。但是在它已经存在之后它无法重置,因此在验证并尝试转到新页面后,它会看到这是从浏览器发送的旧会话 ID 并重定向到登录页面。

我在这里或其他地方没有找到真正解决这个问题的任何东西(除了清除缓存)。大多数对 IE8 cookie 问题的引用都是特定于语言/框架的,不回答这个问题。

我可能需要对 set-cookie 做一些特别的事情来完成这项工作吗?

更新:

我已将 IE8 设置为在接受任何 cookie 之前进行提示。当登录正常时,​​它会按预期提示。当它不起作用时,甚至没有提示除了 cookie..

更新 2:

我应该提到 cookie 应该在 ajax 调用之后设置:

$.get(authenticate_url, ....)

它请求响应的 url 返回设置会话 id 的标头,然后在回调函数中将用户重定向到主页 - 假设登录成功。

【问题讨论】:

    标签: http session cookies internet-explorer-8 sessionid


    【解决方案1】:

    是第一方 cookie 还是第三方 cookie。如果是后者,请确保您发送的是 P3P 标头。 您是否设置了 HTTPOnly 属性? 您确定 cookie 的域始终相同吗?例如。如果您在访问“example.com”时设置了 cookie,并试图从“www.example.com”更改它,那么您会遇到问题。

    【讨论】:

    • 我没有直接在 set-cookie 中设置域。所以这将是一个第一方饼干,对吧?我没有设置 HTTPOnly。
    • 您已经确认在这种情况下用户没有从“example.com”移动到“www.example.com”?
    • 是的。啊,它让我输入 15 个字符?!我不明白为什么它不接受我的“是的”。哈哈,这东西怎么了!:)
    【解决方案2】:

    当我为 www.example.comexample.com 设置 cookie 时,我遇到了类似的症状。如果没有明确设置域,则为两者设置会话 cookie。

    但是,较高级别的域 cookie 优先于较低的域。所以,如果www.example.com 尝试设置一个cookie,但example.com 已经设置了,那么example.com cookie 将保留在原地并继续申请www.example.com

    有两种方法可以解决这个问题。一是不允许有和没有www 子域的访问。将一个重定向到另一个。第二种是显式设置 cookie 域,这样就不会有两个版本。

    当然,这实际上可能不是您的问题。实验并找出答案:)

    【讨论】:

    • 域实际上被设置为我的测试环境的IP。所以cookie的“域”不会改变。但也许还有其他相关的问题?
    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 2017-05-01
    • 1970-01-01
    • 2018-11-10
    • 2011-01-22
    • 2014-06-26
    • 2015-01-28
    • 1970-01-01
    相关资源
    最近更新 更多