会话存储/本地存储是否可以禁用并启用Cookie?

25

对于大多数现代浏览器,是否可以在启用 cookies 的同时禁用会话或本地存储?还是禁用 cookies 也会自动禁用会话/本地存储的使用?


我不明白你想做什么?你的用例是什么?为什么在使用cookies时要关闭浏览器中的存储?这两者并不会相互干扰。 - Magnus Karlsson
5
我的问题很清楚,我也没有说我在尝试做任何事情。我只是想了解用户禁用cookie与会话或本地存储是否也被禁用之间的关系。 - Randy Minder
你的评论实际上澄清了你的要求,所以现在情况比之前更加清晰了。我的问题是想知道你是否有任何特殊用例需要使用Chromium或其他浏览器来解决,但我猜想你没有这样的需求。 - Magnus Karlsson
3个回答

33

从技术角度来说,Cookies和Web Storage API是不同的东西,但一般用户可能不知道两者的区别,也没有必要知道。然而,一般用户已经听说过与Cookies相关的安全问题。他可能还听到过建议定期清除Cookies或完全禁用它们。因此,一般用户期望一个说“禁用Cookies”的功能,但实际上意味着“不要让网站在我的计算机上持久存储数据”。

我相信这就是为什么大多数浏览器继续提供熟悉的“禁用Cookies”功能,但当然在底层做了更多工作,以满足他们认为的实际用户意图。

目前,这种行为取决于浏览器。在以下每个浏览器上禁用Cookies会禁用以下内容:

  • Chrome:cookies、localStorage、sessionStorage、IndexedDB
  • Firefox:cookies、localStorage、sessionStorage
  • IE:仅限cookies

我认为,为了精确性和灵活性,浏览器厂商应该调整他们的实现,提供一个基本选项“不要让网站在这台计算机上存储数据”,它会禁用Cookies和所有持久性存储机制,以及“高级设置”功能,以逐个禁用各种存储机制。


嗨,谢谢你的信息。顺便问一下,你是在哪里找到每个浏览器的行为的呢? - zeroflaw

15
我所能找到的只有W3C Web Storage Specification中的§ 6.1:

将持久存储视为cookie

如果用户尝试通过清除cookie而不清除本地存储区域中存储的数据来保护他们的隐私,那么网站可以使用这两个功能作为彼此冗余的备份来击败这些尝试。 用户代理应以帮助用户了解这种可能性并使其能够同时删除所有持久存储功能中的数据的方式呈现清除这些接口。

浏览器“应该”启用同时删除,但没有关于本地存储和cookie的单独切换的建议。

话虽如此,在IE 11中,我能够disable DOM storage但启用cookie。 相反,禁用cookie对DOM存储没有影响。 在FF和Chrome最新版本中,禁用cookie似乎也会禁用DOM存储。


14

如果您禁用了Cookie,那么本地存储将无法使用。我刚尝试过。

请尝试以下步骤进行验证:

Google Chrome

    step 1 :
    Select the Chrome menu icon Chrome menu.
    Select Settings.
    Near the bottom of the page, select Show advanced settings.
    In the "Privacy" section, select Content settings.
    Select Block sites from setting any data.
    Select Done.

    Step 2 : Open browser console and type localstorage.name="test". This will throw below error

    Uncaught DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.
        at Error (native)
        at <anonymous>:2:1
        at Object.InjectedScript._evaluateOn (<anonymous>:895:140)
        at Object.InjectedScript._evaluateAndWrap (<anonymous>:828:34)
        at Object.InjectedScript.evaluate (<anonymous>:694:21)

    Step 3 : now enable cookie and try it out . Local Storage will work

火狐浏览器:

我在火狐浏览器上测试过了,它的表现方式和其他浏览器一样。

请按照以下步骤进行尝试:

Step 1:
    Click the menu button  New Fx Menu and choose Options.
    Select the Privacy panel.
    Set Firefox will: to Use custom settings for history. 
    Now disable accept cookies from site

Step 2:
Open browser console and try localstorage.name="test" . This will fail as below
SecurityError: The operation is insecure.

Step 3: 
Now enable cookie and try it will work.

因此,如果未启用cookies,则Chrome和Firefox上的本地存储将无法工作。


非常感谢关于Chrome和Firefox的详细信息。不幸的是,您的第一句话(“如果禁用cookie,则本地存储将无法使用”)只适用于某些浏览器。例如,在IE中,禁用cookie仅禁用cookie:您必须在高级设置的复选框中单独禁用本地存储。 - bishop
2
谢谢主教。但是考虑到IE并不是现代浏览器,这仍然很困难 :P。因此我没有在那上面测试。 - Midhun Murali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接