【问题标题】:How to get cookies from Javascript?如何从 Javascript 中获取 cookie?
【发布时间】:2018-12-10 10:20:41
【问题描述】:

如何通过 js 代码访问此“Cookie”? 它们不存在于 document.cookie 对象中(它是空的)

【问题讨论】:

  • Get cookie by name的可能重复
  • 如果一个cookie被标记为HTTPOnly,它可能不会出现在document.cookie中。查看屏幕截图,似乎第一个 cookie 符合条件。我假设其他 cookie 属于不同的域(可能是由于页面上的 iframe),因此除非您将上下文切换到特定的 iframe,否则它们可能不会出现在 document.cookie 上。
  • Nisarg Shah,是的,你是第一个看到它的人。那么,有没有办法获取 HTTPOnly cookie?
  • @dirtyharry 这就是 HTTPOnly 的意义所在。它只能在 HTTP 请求期间被检索,并且不能通过 Javascript。所以没有。

标签: javascript google-chrome http cookies


【解决方案1】:

如果 cookie 被标记为 HTTPOnly,它将不会出现在 document.cookie 中。属性 HTTPOnly 旨在防止 XSS 攻击窃取您的 cookie。因此,您无法从 Javascript 访问标记为 HTTPOnly 的 cookie。

看截图,似乎第一个 cookie 符合条件。我假设其他 cookie 属于不同的域(可能是由于页面上的 iframe),因此除非您将上下文切换到特定的 iframe,否则它们可能不会出现在 document.cookie 上

参考文献:

HTTPOnly cookie 属性可以通过阻止通过 Javascript 访问 cookie 值来帮助缓解这种 (XSS) 攻击。

https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie

此外,您可以在此处的“Cookie 窃取和 XSS”部分阅读更多相关信息:https://www.nczonline.net/blog/2009/05/12/cookies-and-security/

【讨论】:

    【解决方案2】:

    你试过简单的方法吗:

    var x = document.cookie;
    

    或者您可以创建以下函数来访问特定的 cookie

    function getCookie(cname) {
            var name = cname + "=";
            var decodedCookie = decodeURIComponent(document.cookie);
            var ca = decodedCookie.split(';');
            for(var i = 0; i <ca.length; i++) {
                var c = ca[i];
                while (c.charAt(0) == ' ') {
                    c = c.substring(1);
                }
                if (c.indexOf(name) == 0) {
                    return c.substring(name.length, c.length);
                }
            }
            return "";
        }
    

    文档链接:w3schools cookies documentation

    通过 JQuery 尝试

    alert( $.cookie("example") );
    

    或者,如果您有安全 cookie(HTTPOnly Cookie)

    转到此主题:Reading Secure Cookies

    【讨论】:

    • "它们不存在于 document.cookie 对象中(它是空的)"
    • 是的,我删除了那条评论
    • 嗯,最后一个链接看起来很有用,所以我会继续探索它,谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多