it-swarm.com.de

Wie kann ich mit Javascript alle Cookies für die aktuelle Seite auflisten?

Gibt es eine Möglichkeit, mit Hilfe von Javascript alle Cookies aufzulisten, die der aktuellen Seite zugeordnet sind? Das heißt, wenn ich die Namen der Cookies nicht kenne, aber alle darin enthaltenen Informationen abrufen möchte.

55
Speldosa

Sie können Cookies für die aktuelle Domain auflisten:

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;
}

Sie können jedoch aus Sicherheitsgründen keine Cookies für andere Domains auflisten

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

Dadurch wird jedes Cookie angezeigt, auf das die aktuelle Site zugreifen kann. Wenn Sie beispielsweise zwei Cookies "Benutzername = Frankenstein" und "Benutzername = Dracula" erstellt haben, werden diese beiden Codezeilen "Benutzername = Frankenstein; Benutzername = Dracula" angezeigt. Informationen wie das Ablaufdatum werden jedoch nicht angezeigt.

9
Speldosa

(Für die Domain nicht die Seite, wie Tur1ng darauf hinweist)

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

2
monojohnny

Viele Leute haben bereits erwähnt, dass Sie mit document.cookie alle Cookies erhalten (außer http-only).

Ich füge nur einen Ausschnitt hinzu, um mit der Zeit Schritt zu halten.

document.cookie.split(';').reduce((cookies, cookie) => {
  const [ name, value ] = cookie.split('=').map(c => c.trim());
  cookies[name] = value;
  return cookies;
}, {});

Das Snippet gibt ein Objekt mit Cookie-Namen als Schlüssel mit Cookie-Werten als Wert zurück.

2
Jayant Bhawal

Nein.

Die einzigen API-Browser, die Sie für die Verarbeitung von Cookies zur Verfügung stellen, sind das Abrufen und Festlegen dieser Werte über Schlüssel-Wert-Paare. Alle Browser verarbeiten Cookies nur nach Domainname.

Der Zugriff auf alle Cookies für die aktuelle Domain erfolgt über document.cookie.

2
Yuval Adam

Nein, gibt es nicht. Sie können nur Informationen lesen, die der aktuellen Domäne zugeordnet sind.

1
tur1ng
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))
}

Dies ist speziell für das Fenster, in dem Sie sich befinden, versucht, es sauber und knapp zu halten.

0
Fofaster

Einige Cookies, wie z. B. Referrer-URLs, enthalten =. Wenn Sie einfach = teilen, führt dies zu unregelmäßigen Ergebnissen. Die vorherigen Antworten werden im Laufe der Zeit (oder je nach Nutzungstiefe sofort) abgebrochen.

Dies erfordert nur die erste Instanz des Gleichheitszeichens. Es gibt ein Objekt mit den Schlüsselwertpaaren des Cookies zurück.

// 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;
}
0
Travis J

Zum schnellen Anzeigen der Cookies auf einer bestimmten Seite behalte ich die Verknüpfung "Cookies" in der Favoritenleiste mit der URL:

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