如果某个应用程序尝试设置持久性cookie,但浏览器的安全设置被配置为阻止持久性cookie,那么浏览器是否会将其视为会话cookie并将其存储到浏览会话结束?
如果您想存储用户购物篮或类似物品的ID,您需要知道这一点。如果浏览器接受它,您希望使用持久性cookie,否则将回退到会话cookie。
答案 0 :(得分:0)
阻止持久性cookie不会被隐含地降级"降级"对于会话cookie,他们根本没有存储 - 请参阅下面的实验。
你可能在思考"是的,很明显,这个词的哪一部分被阻止了?你不明白吗?"。如果您想使用持久性cookie并回退到会话cookie,请记住这一点。
在上面的购物篮场景中,最好的方法可能是将篮子ID存储在持久性cookie和会话cookie中。如果持久cookie被阻止,那么至少可以在浏览器会话的其余部分使用会话cookie。在用户下次访问该网站时(在删除会话cookie之后),您可以使用持久性Cookie恢复其购物篮(如果可用)。
这是我在Internet Explorer 11中运行的实验。
步骤1.使用接受会话和持久性Cookie的设置存储一些示例Cookie
在IE中,打开“Internet选项 - 隐私选项卡 - 高级按钮” 对于第一方Cookie,请选择"接受"并检查"始终允许会话cookie"
浏览到http://stackoverflow.com,打开F12开发人员工具并在控制台窗口中运行以下脚本:
var expiry = new Date();
expiry.setDate(expiry.getDate() + 7);
// set a persistent cookie
document.cookie='persistent1=test;path=/;expires=' + expiry.toUTCString();
// set a session cookie
document.cookie='session1=test;path=/';
document.cookie;
document.cookie outputs" persistent1 = test;会话1 =试验"正如我们所期望的那样。
关闭并重新打开IE并运行" document.cookie"再次从控制台。持久性cookie仍然存在,但会话cookie已经消失。
到目前为止没有任何新内容,这说明显而易见。但是,会话cookie行为因浏览器而异,可能会混淆实验 - 例如Chrome doesn't always delete session cookies。
步骤2.使用接受会话Cookie但阻止持久性Cookie的设置存储一些示例Cookie
删除浏览记录,以便我们重新开始。
在IE中,打开“Internet选项 - 隐私选项卡 - 高级按钮” 对于第一方Cookie,请选择" Block"并检查"始终允许会话cookie"
浏览回http://stackoverflow.com并再次运行上述脚本。
这一次,document.cookie输出" session1 = test" - 仅存储了会话cookie。阻止的持久性cookie根本没有存储,并且不可用,甚至不作为会话cookie。
答案 1 :(得分:-1)
持久性cookie保持不变。 会话cookie只是会话的cookie。 持久性cookie是持久性的,那就说明一切