2012-02-28 2 views
5

Firefox 확장 기능을 개발 중이며 특정 도메인의 특정 쿠키에 액세스해야합니다. 모든 도메인의 모든 쿠키를 가져 오는이 코드는 내가 찾고있는 쿠키 만 요청하는 방법입니다.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); 
    } 
} 

요약하면, 나는 내가 위의 코드를 찾고 있어요 쿠키를 찾을 수 있어요하지만 난 모든 도메인에서 모든 쿠키를 반복하고 싶지 않아요.

답변

6

당신은 사용할 수 있습니다 nsICookieManager2 interface (원래 nsICookieManager 인터페이스가 동결 된이 확장 버전이 만들어진 이유입니다 변경할 수 없습니다) :

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

참고 : 냉동 인터페이스의 개념은 게코 2.0에 떨어졌다 (Firefox 4). 그 이후로 nsICookieManager/nsICookieManager2과 유사한 일부 인터페이스가 통합되었습니다. 따라서 향후 Firefox 버전 nsICookieManager2도 사라질 수 있으며 모든 기능은 nsICookieManager에 노출됩니다.

+0

당신은 전설입니다! – Manatok

+0

'getCookiesFromHost'가 반환하는 반복자에서 쿠키를 가져 오는 방법에 대한 예제를 제공해 주시겠습니까? – MeLight

+1

전체 예제는 여기에서 찾을 수 있습니다 : https://developer.mozilla.org/en-US/docs/Code_snippets/Cookies – MeLight

관련 문제