【问题标题】:Why only can store 2 cookies in IE11, Edge?为什么IE11、Edge只能存储2个cookie?
【发布时间】:2020-10-31 03:21:10
【问题描述】:

我正在编写一个从file:// 运行的 html 页面(不使用网络服务器),我想在 cookie 中存储一些数据。

我用这个工具测试http://browsercookielimits.iain.guru/,IE11,Edge可以存储180个cookie。

但我的代码,我只能存储 2 个 cookie:

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <script type="text/javascript" src=" https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
    <script type="text/javascript">
        function test() {           
           var i=0;
           var name="testlimit";
           var iMax=5000;
           var val="";
           for(var i=0;i<iMax;i++)
           {
              val +="a";
           }
           for(i=0;i<10;i++)
           {
                setCookie(name+i,val,1)          
                val=getCookie(name+i);
                if(val ==null)
                {
                    alert(i);
                    break;
                }
           }
           alert(i);
          
        }   
        //Save Info to cookies
        function setCookie(name, value, days) {
            var expires = "";
            if (days) {
                var date = new Date();
                date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
                expires = "; expires=" + date.toUTCString();
            }
            document.cookie = name + "=" + (value || "") + expires + "; path=/";
        }

        //Get infor from cookies
        function getCookie(name) {
            var nameEQ = name + "=";
            var ca = document.cookie.split(';');
            for (var i = 0; i < ca.length; i++) {
                var c = ca[i];
                while (c.charAt(0) == ' ') c = c.substring(1, c.length);
                if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
            }
            return null;
        }
    </script>

</head>
<body>
    <input type="button" id="btnSearch" value="test limit" onclick="test(); return false;" />   
</body>
</html >

为什么IE11、Edge只能存储2个cookie?

发生错误后,我无法通过 cookie 存储,我必须清除浏览器的缓存才能再次存储。

【问题讨论】:

  • 你得到什么错误?
  • 不会出现错误,设置后,我再次得到值,它是空的。我的示例将停止 i=2
  • 我不太明白这个问题。
  • 我的问题:我只能在 IE11、Edge 中存储 2 个 cookie。我可以存储超过 2 个 cookie 吗?
  • 其他浏览器是否也存在此问题?

标签: javascript html cookies


【解决方案1】:

我已经理解了我的问题:

Max Size Per Domain= 10234 characters.

因为我的值是 5000 个字符,所以我只能存储 2 个 cookie。

【讨论】:

    【解决方案2】:

    正如您在自己的回答中已经说明的那样,每个域都有一个总体限制。总体而言,如果您的情况并非绝对必要,我建议您不要使用 cookie 来存储长文本。如果您想在浏览器中存储大量数据,有两个推荐选项:

    【讨论】:

    • IE 或 Edge : localStorge, IndexedDB 在页面从 file:// 运行时不起作用(不使用网络服务器)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    相关资源
    最近更新 更多