Accéder à des cookies spécifiques par domaine/nom dans l'extension Firefox
-
13-11-2019 - |
Question
Je développe une extension Firefox et j'ai besoin d'accéder à un cookie spécifique à partir d'un domaine spécifique.J'ai ce code qui récupère tous les cookies pour tous les domaines, comment puis-je demander uniquement le cookie que je recherche.
var {Cc, Ci} = require("chrome");
var cookieManager = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager);
var count = cookieManager.enumerator;
while (count.hasMoreElements()){
var cookie = count.getNext();
if (cookie instanceof Ci.nsICookie){
console.log(cookie.host);
console.log(cookie.name);
console.log(cookie.value);
}
}
Pour résumer, je suis capable de trouver le cookie que je recherche avec le code ci-dessus mais je ne veux pas avoir à parcourir tous les cookies de tous les domaines.
La solution
Vous pouvez utiliser nsICookieManager2
interface (l'original nsICookieManager
l'interface était figée et ne pouvait pas être modifiée, c'est pourquoi cette version étendue a été créée) :
var cookieManager = Cc["@mozilla.org/cookiemanager;1"]
.getService(Ci.nsICookieManager2);
var count = cookieManager.getCookiesFromHost("example.com");
Note:le concept d'interfaces gelées a été abandonné dans Gecko 2.0 (Firefox 4).Depuis, certaines interfaces similaires à nsICookieManager
/nsICookieManager2
ont été unifiés - donc dans une future version de Firefox nsICookieManager2
pourrait également disparaître, toutes les fonctionnalités seront exposées sur nsICookieManager
alors.