2012-02-28 11 views
5

Zajmuję się rozszerzeniem przeglądarki Firefox i potrzebuję dostępu do określonego pliku cookie z określonej domeny. Mam ten kod, który pobiera wszystkie pliki cookie dla wszystkich domen, w jaki sposób mogę poprosić tylko o plik cookie, którego szukam.Dostęp do określonych plików cookie według domeny/nazwy w rozszerzeniu przeglądarki 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); 
    } 
} 

Reasumując, jestem w stanie znaleźć cookie że szukam z powyższym kodzie, ale nie chcę mieć do iterację wszystkich plików cookie ze wszystkich domen.

Odpowiedz

6

Można użyć nsICookieManager2 interface (oryginał nsICookieManager interfejs został zamrożony i nie może być zmieniony, dlatego to rozszerzona wersja została stworzona):

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

Uwaga: pojęcie zamrożonych interfejsach została usunięta w Gecko 2.0 (Firefox 4). Od tego czasu niektóre interfejsy podobne do nsICookieManager/nsICookieManager2 zostały zunifikowane - więc w przyszłości wersja przeglądarki Firefox nsICookieManager2 może również zniknąć, wtedy cała funkcjonalność będzie widoczna na nsICookieManager.

+0

Jesteś legendą! – Manatok

+0

Proszę podać przykład, w jaki sposób pobrać pliki cookie z iteratora, które zwraca 'getCookiesFromHost'? – MeLight

+1

Kompletny przykład można znaleźć tutaj: https://developer.mozilla.org/en-US/docs/Code_snippets/Cookies – MeLight

Powiązane problemy