如何使用Javascript列出当前页面的所有Cookie?

时间:2010-08-03 21:08:17

标签: javascript cookies

有没有办法在Javascript的帮助下列出与当前页面相关的所有cookie?也就是说,如果我不知道cookie的名称,但想要检索它们包含的所有信息。

9 个答案:

答案 0 :(得分:72)

您可以列出当前域的Cookie:

function listCookies() {
    var theCookies = document.cookie.split(';');
    var aString = '';
    for (var i = 1 ; i <= theCookies.length; i++) {
        aString += i + ' ' + theCookies[i-1] + "\n";
    }
    return aString;
}

但出于安全原因,您无法为其他域列出Cookie

答案 1 :(得分:10)

var x = document.cookie; 
window.alert(x);

显示当前站点可以访问的每个cookie。例如,如果你创建了两个cookie“username = Frankenstein”和“username = Dracula”,这两行代码将显示“username = Frankenstein; username = Dracula”。但是,不会显示有效期等信息。

答案 2 :(得分:2)

(对于域名,而不是tur1ng指出的页面)

http://snipplr.com/view/15641/list-cookies-in-javascript/

答案 3 :(得分:2)

唯一允许您处理Cookie的API浏览器是通过键值对获取和设置它们。所有浏览器仅按域名处理cookie

通过document.cookie访问当前域的所有Cookie。

答案 4 :(得分:1)

不,没有。您只能读取与当前域相关的信息。

答案 5 :(得分:0)

function listCookies() {
    let cookies = document.cookie.split(';')
    cookies.map((cookie, n) => console.log(`${n}:`, decodeURIComponent(cookie)))
}

function findCookie(e) {
  let cookies = document.cookie.split(';')
  cookies.map((cookie, n) => cookie.includes(e) && console.log(decodeURIComponent(cookie), n))
}

这是专门针对您所在的窗口的。尝试使其保持简洁简洁。

答案 6 :(得分:0)

某些cookie(例如引荐来源网址)中包含=。结果,仅在=上分割会导致不规则的结果,并且此处的先前答案会随着时间的推移而分解(或立即取决于您的使用深度)。

这仅采用等号的第一个实例。它返回一个带有cookie的键值对的对象。

// Returns an object of key value pairs for this page's cookies
function getPageCookies(){

    // cookie is a string containing a semicolon-separated list, this split puts it into an array
    var cookieArr = document.cookie.split(";");

    // This object will hold all of the key value pairs
    var cookieObj = {};

    // Iterate the array of flat cookies to get their key value pair
    for(var i = 0; i < cookieArr.length; i++){

        // Remove the standardized whitespace
        var cookieSeg = cookieArr[i].trim();

        // Index of the split between key and value
        var firstEq = cookieSeg.indexOf("=");

        // Assignments
        var name = cookieSeg.substr(0,firstEq);
        var value = cookieSeg.substr(firstEq+1);
        cookieObj[name] = value;
   }
   return cookieObj;
}

答案 7 :(得分:0)

为了快速查看任何特定页面上的cookie,我保留了一个收藏夹栏“ Cookies”快捷方式,其URL设置为:

javascript:window.alert(document.cookie.split(';').join(';\r\n'));

答案 8 :(得分:0)

我在 https://electrictoolbox.com/javascript-get-all-cookies/ 上找到了此代码,它比其他解决方案更适合我:

function get_cookies_array() {

    var cookies = { };

    if (document.cookie && document.cookie != '') {
        var split = document.cookie.split(';');
        for (var i = 0; i < split.length; i++) {
            var name_value = split[i].split("=");
            name_value[0] = name_value[0].replace(/^ /, '');
            cookies[decodeURIComponent(name_value[0])] = decodeURIComponent(name_value[1]);
         }
     }

     return cookies;
}