【问题标题】:Creating a cookie on localhost在 localhost 上创建 cookie
【发布时间】:2012-04-17 06:11:45
【问题描述】:

我正在寻找一种在 javascript 中在本地主机上创建/检测 cookie 的方法。基本上,如果会话中存在具有指定名称“foo”的 cookie,则什么也不做。如果不存在 cookie,则创建一个名为 foo 的新 cookie 并使用 guid 填充它。我如何在 javascript 中做到这一点?

谢谢

【问题讨论】:

    标签: javascript cookies localhost


    【解决方案1】:

    从 javascript 读取 cookie 需要一些字符串解析。有许多优秀的库可以让这项任务变得更容易,但您可以使用类似于以下的代码来获取和设置 cookie 值

    <script type="text/javascript">
        function GetCookieValue(key) {
            var value = null;
            var cookieArray = document.cookie.split(';');
            for (var i = 0; i < cookieArray.length; i++) {
                var keyValuePair = cookieArray[i].split("=");
                if (keyValuePair[0] == key) {
                    value = keyValuePair[1];
                    break;
                }
            }
            return value;
        }
    
        function SetCookieValue(key, value) {
            document.cookie = key + "=" + value;
        }
    </script>
    

    在 javascript 中生成 Guid 有点困难。 This guy 有一个不错的库,您可以将其包含在内,它会生成良好的 GUID。我知道还有一些 jQuery 插件是出于类似目的而创建的,但我没有使用它们。

    如果您包含以下脚本,以及上面的功能,它应该可以满足您的需求。

    <script type="text/javascript" src="http://www.broofa.com/Tools/Math.uuid.js"></script>
    <script type="text/javascript">
        var guid = GetCookieValue("myGuid");
        if (guid == null)
            SetCookieValue("myGuid", Math.uuid());
    
        alert(GetCookieValue("myGuid"));
    </script>
    

    【讨论】:

    • document.cookie 的问题是我的本地主机页面上没有设置 cookie。相反,我正在调用一个外部域,该域设置了我要检查的 cookie。所以我实际上是在调用一个域,例如 google.com,它将它的 cookie 设置在它自己的域下。当我查看 ff 中的 cookie 列表时,我可以看到这一点。 cookie 设置在 google.com 下(例如)。我想检查它是否存在
    • Javascript 不允许您从其他域访问 cookie。这是一个安全风险。
    猜你喜欢
    • 2010-09-28
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2014-04-29
    • 2011-12-29
    • 2012-03-07
    • 1970-01-01
    相关资源
    最近更新 更多