2011-03-31 26 views
2

我遇到了一个问题,在我的网站上登录不能在IE8中一致地工作。它在Firefox/Chrome/Safari中运行良好,但不是IE8。IE8不会总是编辑Cookie值

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

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

的Set-Cookie SESSIONID = ....... 。 Path =/

在响应头中。但显然,这与清除缓存的作品,我可以得到罚款。但是在它已经存在之后,它不能重置,因此在认证并尝试进入新页面之后,它看到这是从浏览器发送并重定向到登录页面的旧会话ID。

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

有什么特别的,我可能需要做的设置cookie来做到这一点?

UPDATE:

我设置IE8接受任何cookie之前进行提示。当登录工作正常时,它会按预期提示。当它不工作,甚至没有一个提示除了饼干..

更新2:

我应该提到的是,饼干,预计Ajax调用后,设置:

$获得(authenticate_url,....)

它要求从返回该设置会话ID,然后在回调函数将用户重定向到主网页的标题一个响应的URL - 假设登录是成功的。

回答

1

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

+0

我不是直接在set-cookie中设置域。所以这将是一个第一方的cookie,对吧?我没有设置HTTPOnly。 – 2011-03-31 03:10:33

+0

你已经确认用户在这种情况下不会从“example.com”转到“www.example.com”吗? – EricLaw 2011-04-01 14:00:31

+0

是的。呃,它让我输入15个字符?!我无法弄清楚为什么它不会采取我的“是”。哈哈,这个东西有什么问题!:) – 2011-04-07 02:37:12

1

当我将Cookie设置为www.example.comexample.com时,我遇到了类似症状。如果没有显式设置域,那么会话cookie将被设置为两者。

但是,更高级别的域名cookie优先于较低级别的域名。因此,如果www.example.com尝试设置Cookie,但已有example.com,那么example.com Cookie将保留并继续申请www.example.com

有两种方法可以解决这个问题。一种是不允许在有和没有www子域时访问。将一个重定向到另一个。其次是明确设置cookie域,以便不存在两个版本。

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

+0

这个域名实际上被设置为我的测试环境的IP地址,所以cookie的'域名'并没有改变,但是可能还有其他问题呢? – 2011-03-31 17:09:22