web-dev-qa-db-fra.com

J'ai besoin de tous les cookies du navigateur

Je dois obtenir tous les cookies enregistrés dans mon navigateur en utilisant JavaScript. Comment ceci peut être fait?

88
nayagi

Vous ne pouvez accéder aux cookies que pour un site spécifique. En utilisant document.cookie vous obtiendrez une liste de paires clé = valeur échappées séparées par un point-virgule.

secret=do%20not%20tell%you;last_visit=1225445171794

Pour simplifier l'accès, vous devez analyser la chaîne et décaper toutes les entrées:

var getCookies = function(){
  var pairs = document.cookie.split(";");
  var cookies = {};
  for (var i=0; i<pairs.length; i++){
    var pair = pairs[i].split("=");
    cookies[(pair[0]+'').trim()] = unescape(pair.slice(1).join('='));
  }
  return cookies;
}

Donc, vous pourriez écrire plus tard:

var myCookies = getCookies();
alert(myCookies.secret); // "do not tell you"
75
aemkei
  1. Vous ne pouvez pas voir les cookies pour d'autres sites.
  2. Vous ne pouvez pas voir HttpOnly cookies.
  3. Tous les cookies que vous pouvez voir sont dans le document.cookie propriété, qui contient une point-virgule liste séparée de name=value paires.
30
Franci Penov

Vous ne pouvez pas. De par sa conception, à des fins de sécurité, vous ne pouvez accéder qu'aux cookies définis par votre site. StackOverflow ne peut pas voir les cookies définis par UserVoice, ni ceux définis par Amazon.

26
PhiLho

Pour récupérer tous les cookies du document actif ouvert dans le navigateur, vous devez à nouveau utiliser le document.cookie propriété.

12
Codeslayer

Étant donné que le titre ne précisait pas qu'il devait être programmatique, je supposerai qu'il s'agissait d'un véritable problème de gestion de la confidentialité et du débogage et que la solution dépend du navigateur et nécessite un navigateur doté du système intégré de gestion des cookies et/ou d'un module de débogage ou un plug-in/extension. Je vais en énumérer un et demander aux autres de rédiger sur des navigateurs qu’ils connaissent en détail et d’être précis avec les versions.

Chrome, fonte de fer (SRWare Iron 4.0.280)

Le menu de la clé (outil): Options/Under The Hood/[Afficher les cookies et les autorisations de site Web] Pour les domaines/sites connexes, saisissez le suffixe dans le champ de recherche (par exemple, .foo.tv). Mise en garde: lorsque vous avez un nœud (site ou cookie), cliquez sur le bouton en surbrillance, utilisez uniquement [Supprimer] pour supprimer des sous-arbres spécifiques. L'utilisation de [Supprimer tout] supprimera les cookies pour tous les sites sélectionnés par la recherche et gaspillera votre session de débogage.

2
ZXX

Approche moderne.

let c = document.cookie.split(";").reduce( (ac, cv, i) => Object.assign(ac, {[cv.split('=')[0]]: cv.split('=')[1]}), {});

console.log(c);

;)

2
Prabu samvel

Ajout de trim () à la clé dans object, et nommez-la str, il serait donc plus clair que nous traitons de chaîne ici.

export const getAllCookies = () => document.cookie.split(';').reduce((ac, str) => Object.assign(ac, {[str.split('=')[0].trim()]: str.split('=')[1]}), {});
0
Netanel R