2012-02-28 9 views
5

Estoy desarrollando una extensión de Firefox y necesito acceder a una cookie específica de un dominio específico. Tengo este código que busca todas las cookies para todos los dominios, ¿cómo solicito solo la cookie que estoy buscando?Acceda a cookies específicas por dominio/nombre en la extensión de Firefox

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); 
    } 
} 

Para resumir, yo soy capaz de encontrar la cookie que estoy buscando con el código anterior pero yo no quiero tener que recorrer todas las cookies de todos los dominios.

Respuesta

6

Puede utilizar nsICookieManager2 interface (la interfaz original nsICookieManager se congeló y no podía ser cambiado por lo que se creó esta versión extendida):

var cookieManager = Cc["@mozilla.org/cookiemanager;1"] 
         .getService(Ci.nsICookieManager2); 
var count = cookieManager.getCookiesFromHost("example.com"); 

Nota: el concepto de interfaces congeladas se dejó caer en Gecko 2.0 (Firefox 4). Desde entonces algunas interfaces similares a nsICookieManager/nsICookieManager2 se unificaron, por lo que en el futuro la versión de Firefox nsICookieManager2 también podría desaparecer, toda la funcionalidad quedará expuesta en nsICookieManager.

+0

¡Eres una leyenda! – Manatok

+0

¿Podría proporcionar un ejemplo de cómo recuperar las cookies del iterador que devuelve 'getCookiesFromHost'? – MeLight

+1

Un ejemplo completo se puede encontrar aquí: https://developer.mozilla.org/en-US/docs/Code_snippets/Cookies – MeLight

Cuestiones relacionadas