我遇到了一个问题,即我的网站上的登录在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的标头,然后在回调函数中将用户重定向到主页面 - 假设登录成功。
答案 0 :(得分:1)
是第一方Cookie还是第三方Cookie。如果是后者,请确保您发送的是P3P标头。 您是否设置了HTTPOnly属性? 您确定Cookie的域名始终相同吗?例如。如果您在访问“example.com”时设置了cookie并尝试从“www.example.com”更改它,那么您将遇到问题。
答案 1 :(得分:1)
当我为www.example.com
和example.com
设置了Cookie时,我遇到了类似的症状。如果没有明确设置域,则会为两者设置会话cookie。
但是,更高级别的域cookie优先于较低级别的domian。因此,如果www.example.com
尝试设置Cookie,但example.com
已经存在,则example.com
Cookie会保留,并继续申请www.example.com
。
有两种方法可以解决这个问题。一个是不允许使用和不使用www
子域进行访问。将一个重定向到另一个。第二个是明确设置cookie域,因此没有两个版本。
当然,这可能不是你的问题。试验并找出:)