在Firefox扩展中按域/名访问特定cookie

时间:2012-02-28 06:57:36

标签: javascript cookies firefox-addon firefox-addon-sdk

我正在开发Firefox扩展,需要访问特定域中的特定cookie。我有这个代码来获取所有域的所有cookie,我如何只请求我正在寻找的cookie。

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

总而言之,我能够使用上面的代码找到我正在寻找的cookie,但我不想迭代所有域中的所有cookie。

1 个答案:

答案 0 :(得分:6)

您可以使用nsICookieManager2 interface(原始的nsICookieManager界面已被冻结且无法更改,这就是创建此扩展版本的原因):

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

注意:在Gecko 2.0(Firefox 4)中删除了冻结接口的概念。从那时起,一些类似于nsICookieManager / nsICookieManager2的接口已经统一 - 因此在未来的Firefox版本nsICookieManager2中也可能会消失,所有功能都将在nsICookieManager上公开然后