Je dois obtenir tous les cookies enregistrés dans mon navigateur en utilisant JavaScript. Comment ceci peut être fait?
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"
HttpOnly
cookies.document.cookie
propriété, qui contient une point-virgule liste séparée de name=value
paires.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.
Pour récupérer tous les cookies du document actif ouvert dans le navigateur, vous devez à nouveau utiliser le document.cookie
propriété.
É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.
Approche moderne.
let c = document.cookie.split(";").reduce( (ac, cv, i) => Object.assign(ac, {[cv.split('=')[0]]: cv.split('=')[1]}), {});
console.log(c);
;)
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]}), {});