API для создания куки для FireFox - PullRequest
1 голос
/ 20 января 2012

Я хочу написать приложение, которое будет создавать куки для Firefox.Я хочу создать клиентские куки, чтобы firefox отправлял контент куки в HTTP-запросе.Похоже на win32 API InternetSetCookie ()

Можете ли вы помочь в этом?

Если вы можете указать мне какой-нибудь фрагмент кода или помощь, я постараюсь выяснить из этого.

Этот файл cookie должен идти в базу данных SQLITE, но из старых вопросов видно, что эта база данных блокируется, если запущен firefox.Эта блокировка выполняется в FF 3.5

Просто хочу подтвердить, так ли это с FF9 или у нас есть какой-либо API?

С уважением

1 Ответ

2 голосов
/ 20 января 2012

В Firefox вы можете написать дополнение для достижения этой цели.Взгляните на исходный код следующих дополнений.Они предоставляют такие функции, как добавление, удаление, редактирование файлов cookie во время работы Firefox.Кажется, все они работают с Firefox 9.0.1 (последняя стабильная версия).

  1. Диспетчер файлов cookie +
  2. Расширенный диспетчер файлов cookie
  3. Добавить N Редактировать Cookie
  4. Редактировать Cookie

Редактировать:

Я публикую некоторый код управления файлами cookie из файла MozillaCookieManagerImpl.js модуля Evernote.Я думаю, что код говорит сам за себя.Посмотрите ниже.В нем показано, как получить доступ к файлам cookie, установить, получить и удалить их и т. Д.

Доступ к интерфейсу управления файлами cookie Mozilla

Evernote.MozillaCookieManagerImpl = function MozillaCookieManagerImpl() {
};
Evernote.inherit(Evernote.MozillaCookieManagerImpl,
    Evernote.CookieManagerImpl, true);
Evernote.MozillaCookieManagerImpl.isResponsibleFor = function(navigator) {
  var ua = navigator.userAgent.toLowerCase();
  return (ua.indexOf("firefox") >= 0 || ua.indexOf("thunderbird") >= 0 || ua
      .indexOf("shredder") >= 0);
};


Evernote.MozillaCookieManagerImpl.prototype.manager = null;
Evernote.MozillaCookieManagerImpl.prototype._ios = null;
Evernote.MozillaCookieManagerImpl.prototype._cookieSrv = null;
Evernote.MozillaCookieManagerImpl.prototype._cookieManagerSrv = null;


Evernote.MozillaCookieManagerImpl.prototype.getIOService = function() {
  if (this._ios == null) {
    this._ios = Components.classes["@mozilla.org/network/io-service;1"]
        .getService(Components.interfaces.nsIIOService);
  }
  return this._ios;
};


Evernote.MozillaCookieManagerImpl.prototype.getCookieService = function(
    force) {
  if (this._cookieSrv == null || force) {
    this._cookieSrv = Components.classes["@mozilla.org/cookieService;1"]
        .getService(Components.interfaces.nsICookieService);
  }
  return this._cookieSrv;
};


Evernote.MozillaCookieManagerImpl.prototype.getCookieManagerService = function(
    force) {
  if (this._cookieManagerSrv == null || force) {
    this._cookieManagerSrv = Components.classes["@mozilla.org/cookiemanager;1"]
        .getService(Components.interfaces.nsICookieManager);
  }
  return this._cookieManagerSrv;
};

Получить cookie

Evernote.MozillaCookieManagerImpl.prototype.get = function(name, url) {
  var uri = this.getIOService().newURI(url, null, null);
  var cookieMgr = this.getCookieManagerService();
  if (cookieMgr) {
    for ( var e = cookieMgr.enumerator; e.hasMoreElements();) {
      var cookie = e.getNext().QueryInterface(Components.interfaces.nsICookie);
      if (cookie && cookie.host == uri.host && cookie.name == name) {
        return new Evernote.Cookie(cookie);
      }
    }
  }
  return null;
};

Набор Cookie

Evernote.MozillaCookieManagerImpl.prototype.set = function(cookie, url) {
  var uri = (typeof url == 'string') ? this.getIOService().newURI(url, null,
      null) : null;
  if (cookie instanceof Evernote.Cookie && typeof cookie.name == 'string'
      && cookie.name.length > 0) {
    this.getCookieService().setCookieString(uri, null,
        (cookie.name + "=" + cookie.value + ";"), null);
  }
};

Removie Cookie

Evernote.MozillaCookieManagerImpl.prototype.remove = function(name, url) {
  var cookieMgr = this.getCookieManagerService();
  var urlParts = url.split("://", 2);
  var domain = (urlParts.length == 2) ? urlParts[1] : urlParts[0];
  urlParts = domain.split("/", 2);
  var path = (urlParts.length == 2) ? urlParts[1] : null;
  cookieMgr.remove(domain, name, path, false);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...