1

Я пытаюсь перевести Addon из Chrome, который создал кто-то другой. В нем есть скрипт контента, который содержит chrome.cookies.get. Я не могу найти подходящий способ исправить это для Firefox. Есть ли способ, с помощью которого я могу получить доступ к файлам cookie из сценария контента в аддон sdk?Доступ к файлам cookie с помощью сценария содержимого Firefox Addon?

Вот исходный код:

function getCookies(domain, name, callback) { 
    chrome.cookies.get({"url": domain, "name": name}, 
     function(cookie) { 
      if (callback) { 
       if (cookie) { 
         callback(cookie.value); 
       } else { 
        callback(null); 
       } 
      } 
     } 
    ); 
} 

ответ

7

Сценарий содержания не имеет необходимые права для использования какого-либо продвинутый API - ни в Firefox, ни в Chrome. Он может получить файлы cookie для текущей страницы через document.cookie. Те же ограничения применяются, что и для самой веб-страницы. Файлы cookie HTTPOnly не будут видны.

В дополнительных модулях вы можете использовать nsICookieManager2 interface для доступа к файлам cookie. См. Access specific cookies by domain/name in Firefox extension. Если вам нужна эта информация из сценария контента, вам нужно будет отправить сообщение из сценария контента на расширение, чтобы получить расширение для него.

+0

Я полностью смущен 'nsICookieManager'. Все, что я хочу сделать, это загрузить и установить файлы cookie из другого домена. Могу ли я использовать 'nsICookieManager' для изменения существующего файла cookie? Единственный возможный вариант - 'add'. Это заменит печенье уже на месте? Извините, если я действительно шучу - я никогда не использовал файлы cookie раньше, и MDN не хватает примеров. – Ian

+0

@Ian: Да, вы вызываете 'add()' для перезаписывания файла cookie. Эти методы должны быть вызваны реализацией протокола HTTP, а в HTTP вы неявно переписываете куки. –