jQuery:cookie 问题 Internet Explorer

标签 jquery internet-explorer cookies

我已经制作了一个登录页面。当用户登录时,将发送对 API 的请求。该 API 是 PHP,检查用户名和密码。当两者都正确时,将发送回唯一 key (将其放置在数据库中以供进一步使用:用户 ID 和网站所需的其他内容)。 该 key 发回后,将被放置在 cookie 中:

$.cookie("session", JSON.stringify(result));

设置 cookie 后,我将用户发送到一个新页面:

location.href = 'dashboard.htm';

在此页面中,jQuery 检查 cookie“ session ”是否存在。如果没有,用户将被发送回登录页面。

sessionId = ($.cookie("session") ? JSON.parse($.cookie("session")).SessionId : 0);
return sessionId;

这在 Chrome 中工作正常,但 IE (8/9) 存在一些问题。我发现当您访问dashboard.htm 时, session 就存在。我一按 F5, session 就消失了。有时 cookie 根本没有设置!

我似乎无法弄清楚为什么在 IE 中会发生这种情况。有人有什么想法吗?也欢迎使用其他选项/想法来保存唯一 key 。

提前致谢。

最佳答案

可能的想法/您可能尝试的事情列表。多年来收集的一些信息!

您还应该 100% 确定您的 Cookie 代码不会重置 Cookie。我已经做到了,而且我知道其他人也做到了。我们发誓这不是我们的代码,但最终有时它是;)

Cookie 名称中应远离特殊字符,例如下划线 (_) 和连字符 (-)。 IE 不喜欢它们,有时东西可以工作,有时则不行。

确保将 cookie 设置为非常远的过期日期。浏览器使用计算机本地时间来查看 cookie 是否仍然可用。如果计算机日期和时间不正确,可能会导致类似这样的问题。

确保您为正确的域名设置 cookie,我见过有人为 path.example.com 设置 cookie,然后尝试从 bob.example.com 访问它们。由于跨域策略,这将不起作用。

如果您尝试通过 Javascript 访问 cookie,您应该确保没有将 httponly 标志设置为 true。该标志将 100% 防止 Javascript 访问任何 cookie。

如果您在 iframe 或框架集中设置 cookie,您的服务器很可能需要 P3P 策略。如果您计划支持 IE,那么您很可能应该拥有一个。欲了解更多信息,请访问http://en.wikipedia.org/wiki/P3P

设置 P3P 策略的 HTACCESS 示例:

<IfModule mod_headers.c>
    Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
</IfModule>

对于监控 cookie 的方法,我建议使用 Chrome 的检查器。在“网络”选项卡下,您可以单击一个请求,它会给您提供更多选项卡,例如“Cookie”选项卡,您可以通过它查看所有 Cookie。

关于jQuery:cookie 问题 Internet Explorer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899513/

相关文章:

javascript - 使 angular2-cookie 安全并加密

cookies - 谷歌分析 : setting custom visitor segments

javascript - 刷新div并随机改变文字颜色

javascript - css/javascript : checking pixels of image where hover effect is triggered

CSS:在 Internet Explorer 中压缩列加载

typescript - 在生产中禁用 console.log()

javascript - 简单模态不会关闭 | IE8 错误 |窗口位置.href

javascript - 跨页面持久保存 jQuery Cookie

jquery - 如何重新应用 jQuery 选择器?

javascript - JS : Using variable names to call function