IE8不会总是编辑Cookie值

时间:2011-03-31 00:48:29

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

我遇到了一个问题,即我的网站上的登录在IE8中无法正常运行。它在Firefox / Chrome / Safari中运行良好,但不适用于IE8。

首次登录时一切都很好。注销并尝试重新登录后通常会失败一段时间。在验证后,它将最终重定向到登录页面。

因此身份验证成功,它返回true,但似乎IE8不接受我们通过返回设置的会话ID的新值:

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

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

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

我可能需要使用set-cookie来完成这项工作吗?

更新

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

更新2:

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

$。get(authenticate_url,....)

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

但是,更高级别的域cookie优先于较低级别的domian。因此,如果www.example.com尝试设置Cookie,但example.com已经存在,则example.com Cookie会保留,并继续申请www.example.com

有两种方法可以解决这个问题。一个是不允许使用和不使用www子域进行访问。将一个重定向到另一个。第二个是明确设置cookie域,因此没有两个版本。

当然,这可能不是你的问题。试验并找出:)