Gibt es eine Möglichkeit, mithilfe von Javascript alle mit der aktuellen Seite verknüpften Cookies aufzulisten? Das heißt, wenn ich die Namen der Cookies nicht kenne, aber alle darin enthaltenen Informationen abrufen möchte.
javascript
cookies
Speldosa
quelle
quelle
HttpOnly
. Dies liegt daran, dass XSS-Angriffe dadurch viel weniger mächtig werden.Antworten:
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; }
Aus Sicherheitsgründen können Sie jedoch keine Cookies für andere Domains auflisten
quelle
httpOnly=true
.aString += i + ' ' + decodeURIComponent(theCookies[i-1]) + "\n";
var x = document.cookie; window.alert(x);
Dies zeigt jedes Cookie an, auf das die aktuelle Site Zugriff hat. Wenn Sie beispielsweise zwei Cookies "Benutzername = Frankenstein" und "Benutzername = Dracula" erstellt haben, wird in diesen beiden Codezeilen "Benutzername = Frankenstein; Benutzername = Dracula" angezeigt. Informationen wie das Ablaufdatum werden jedoch nicht angezeigt.
quelle
httpOnly
, was empfohlen wird, da dies dazu beiträgt, die negativen Folgen eines XSS-Angriffs zu verringern.Viele Leute haben bereits erwähnt, dass
document.cookie
Sie alle Cookies erhalten (außerhttp-only
denen).Ich werde nur einen Ausschnitt hinzufügen, 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 Werten zurück.
Etwas andere Syntax:
document.cookie.split(';').reduce((cookies, cookie) => { const [ name, value ] = cookie.split('=').map(c => c.trim()); return { ...cookies, [name]: value }; }, {});
quelle
Um die Cookies auf einer bestimmten Seite schnell anzuzeigen, behalte ich eine Verknüpfung in der Favoritenleiste "Cookies" mit der URL:
javascript:window.alert(document.cookie.split(';').join(';\r\n'));
quelle
Nein.
Der einzige API-Browser, mit dem Sie Cookies verarbeiten können, besteht darin, sie über Schlüssel-Wert-Paare abzurufen und festzulegen. Alle Browser verarbeiten Cookies nur nach Domainnamen .
Der Zugriff auf alle Cookies für die aktuelle Domain erfolgt über
document.cookie
.quelle
Nein, gibt es nicht. Sie können nur Informationen lesen, die der aktuellen Domain zugeordnet sind.
quelle
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. Es wurde versucht, es sauber und präzise zu halten.
quelle
Einige Cookies, wie z. B. Referrer-URLs, enthalten
=
diese. Infolgedessen führt das einfache Aufteilen zu=
unregelmäßigen Ergebnissen, und die vorherigen Antworten hier werden im Laufe der Zeit (oder sofort, abhängig von Ihrer Verwendungstiefe) zusammenbrechen.Dies nimmt 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; }
quelle