Est-il possible, avec l'aide de Javascript, de lister tous les cookies associés à la page actuelle? Autrement dit, si je ne connais pas le nom des cookies mais que je veux récupérer toutes les informations qu’ils contiennent.
Vous pouvez lister les cookies pour le domaine actuel:
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;
}
Mais vous ne pouvez pas lister les cookies pour d'autres domaines pour des raisons de sécurité
var x = document.cookie;
window.alert(x);
Cela affiche chaque cookie auquel le site actuel a accès. Si vous avez par exemple créé deux cookies "nom d'utilisateur = Frankenstein" et "nom d'utilisateur = Dracula", ces deux lignes de code afficheront "nom d'utilisateur = Frankenstein; nom d'utilisateur = Dracula". Toutefois, les informations telles que la date d'expiration ne seront pas affichées.
(Pour le domaine, pas la page comme le souligne tur1ng)
De nombreuses personnes ont déjà mentionné que document.cookie
récupère tous les cookies (sauf ceux de http-only
).
Je vais juste ajouter un extrait pour suivre le rythme.
document.cookie.split(';').reduce((cookies, cookie) => {
const [ name, value ] = cookie.split('=').map(c => c.trim());
cookies[name] = value;
return cookies;
}, {});
L'extrait renverra un objet avec les noms de cookies comme clés avec les valeurs de cookies comme valeurs.
Non.
Les seuls navigateurs d'API qui vous permettent de gérer les cookies sont de les récupérer et de les définir via des paires clé-valeur. Tous les navigateurs gèrent les cookies par nom de domaine uniquement.
L'accès à tous les cookies pour le domaine actuel se fait via document.cookie
.
Non il n'y en a pas. Vous ne pouvez lire que les informations associées au domaine actuel.
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))
}
Ceci est spécifiquement pour la fenêtre dans laquelle vous êtes. J'ai essayé de la garder propre et concise.
Certains cookies, tels que les URL de référence, contiennent =
. En conséquence, le fait de scinder simplement =
entraînera des résultats irréguliers et les réponses précédentes seront décomposées avec le temps (ou immédiatement en fonction de votre profondeur d'utilisation).
Cela ne prend que la première instance du signe égal. Il retourne un objet avec les paires valeur/clé du 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;
}
Pour visualiser rapidement les cookies d'une page en particulier, je garde un raccourci "Cookies" dans la barre des favoris, avec l'URL définie sur:
javascript:window.alert(document.cookie.split(';').join(';\r\n'));