首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果浏览器阻止了持久性cookie,它是否仍然可以作为会话cookie使用?

如果浏览器阻止了持久性cookie,它是否仍然可以作为会话cookie使用?
EN

Stack Overflow用户
提问于 2014-04-03 16:26:53
回答 2查看 671关注 0票数 0

如果应用程序尝试设置永久cookie,但浏览器的安全设置配置为阻止永久cookie,浏览器是否会将其视为会话cookie,并将其存储到浏览会话结束为止?

如果你想存储用户购物篮的id或类似的东西,你需要知道这一点。如果浏览器接受的话,你会希望它使用一个持久的cookie,否则会退回到一个会话cookie。

EN

回答 2

Stack Overflow用户

发布于 2014-04-03 18:23:42

好吧,我变得不耐烦了,自己做了一些实验。

阻塞的持久化cookies不会隐式地“降级”为会话cookies,它们根本不会被存储--参见下面的实验。

你可能会想:“是的,这很明显,你不明白‘阻止’这个词的哪一部分?”如果您想要使用持久cookie并回退到会话cookie,请记住这一点。

在上面的购物篮场景中,最好的方法可能是将购物篮id同时存储在持久cookie和会话cookie中。如果永久cookie被阻止,那么至少您可以在浏览器会话的其余部分使用会话cookie。

这是我在Internet Explorer11上运行的一个实验。

步骤1.使用同时接受会话和持久cookies的设置存储一些示例cookies

浏览到http://stackoverflow.com,打开F12 developer tools,然后在控制台窗口中运行以下脚本:

代码语言:javascript
复制
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输出"persistent1=test;session1=test“。

关闭并重新打开IE,然后从控制台再次运行"document.cookie“。持久cookie仍然存在,但会话cookie已消失。

到目前为止,没有什么新的东西,这是一个显而易见的事实。然而,会话cookie的行为在不同的浏览器中是不同的,并且可能会混淆实验-例如,Chrome doesn't always delete session cookies

步骤2.使用接受会话cookies但阻止持久cookies的设置存储一些示例cookies

在IE中,打开Internet Options - Privacy Tab - Advanced Button For First-party Cookies,选择"Block“并选中"Always allow session cookies”

重新浏览到http://stackoverflow.com并再次运行上面的脚本。

这一次,document.cookie输出"session1=test“--只存储了会话cookie。被阻止的持久cookie根本没有存储,甚至不能作为会话cookie使用。

票数 0
EN

Stack Overflow用户

发布于 2019-12-09 12:31:21

持久化cookie保持为持久化。会话cookies仅是会话的cookies。持久性cookie是持久性的,这就说明了一切。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22831916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档