Описание
Используйте API chrome.cookies
для запроса и изменения файлов cookie, а также для получения уведомлений об их изменении.
Разрешения
cookies
Чтобы использовать API cookie-файлов, укажите разрешение "cookies"
в манифесте вместе с разрешениями для всех хостов, к файлам cookie которых вы хотите получить доступ. Например:
{
"name": "My extension",
...
"host_permissions": [
"*://*.google.com/"
],
"permissions": [
"cookies"
],
...
}
Разбиение
Разделённые файлы cookie позволяют сайту указать, что определённые файлы cookie должны быть привязаны к источнику фрейма верхнего уровня. Это означает, что, например, если сайт A встроен с помощью iframe на сайтах B и C, встроенные версии разделённого файла cookie с A могут иметь разные значения на сайтах B и C.
По умолчанию все методы API работают с неразделёнными cookie-файлами. Свойство partitionKey
можно переопределить с помощью свойства partitionKey.
Подробную информацию об общем влиянии разбиения на разделы для расширений см. в разделе Хранилище и файлы cookie .
Примеры
Простой пример использования API cookie-файлов можно найти в каталоге examples/api/cookies . Другие примеры и помощь с просмотром исходного кода см. в разделе «Примеры» .
Типы
Cookie
Представляет информацию о HTTP-cookie.
Характеристики
- домен
нить
Домен cookie-файла (например, «www.google.com», «example.com»).
- Дата окончания срока
номер необязательный
Срок действия cookie-файла определяется количеством секунд с начала эпохи UNIX. Не предусмотрено для сеансовых cookie-файлов.
- только хост
булев
True, если cookie-файл является cookie-файлом, действующим только на хосте (т.е. хост запроса должен точно соответствовать домену cookie-файла).
- httpOnly
булев
True, если cookie-файл помечен как HttpOnly (т.е. cookie-файл недоступен для клиентских скриптов).
- имя
нить
Имя файла cookie.
- partitionKey
CookiePartitionKey необязательно
Хром 119+Ключ раздела для чтения или изменения файлов cookie с атрибутом Partitioned.
- путь
нить
Путь файла cookie.
- тот жеСайтХром 51+
Статус куки-файла на том же сайте (т. е. отправляется ли куки-файл с межсайтовыми запросами).
- безопасный
булев
True, если cookie-файл помечен как безопасный (т.е. его область действия ограничена безопасными каналами, обычно HTTPS).
- сессия
булев
True, если cookie-файл является сеансовым, а не постоянным cookie-файлом с датой истечения срока действия.
- storeId
нить
Идентификатор хранилища cookie, содержащего этот cookie, указанный в getAllCookieStores().
- ценить
нить
Ценность куки-файла.
CookieDetails
Подробная информация для идентификации cookie-файла.
Характеристики
- имя
нить
Имя куки-файла для доступа.
- partitionKey
CookiePartitionKey необязательно
Хром 119+Ключ раздела для чтения или изменения файлов cookie с атрибутом Partitioned.
- storeId
строка необязательная
Идентификатор хранилища cookie, в котором следует искать cookie. По умолчанию будет использоваться хранилище cookie текущего контекста выполнения.
- URL-адрес
нить
URL-адрес, с которым связан файл cookie для доступа. Этот аргумент может быть полным URL-адресом, в этом случае любые данные, следующие за URL-путем (например, строка запроса), просто игнорируются. Если разрешения хоста для этого URL-адреса не указаны в файле манифеста, вызов API завершится ошибкой.
CookiePartitionKey
Представляет собой ключ раздела разделенного cookie-файла.
Характеристики
- hasCrossSiteAncestor
логическое необязательное
Хром 130+Указывает, был ли файл cookie установлен в межсайтовом контексте. Это предотвращает доступ сайта верхнего уровня, встроенного в межсайтовый контекст, к файлам cookie, установленным сайтом верхнего уровня в контексте того же сайта.
- topLevelSite
строка необязательная
Сайт верхнего уровня, на котором доступен разделенный cookie-файл.
CookieStore
Представляет хранилище файлов cookie в браузере. Например, окно в режиме инкогнито использует отдельное хранилище файлов cookie, отличное от окна в режиме инкогнито.
Характеристики
- идентификатор
нить
Уникальный идентификатор хранилища cookie.
- tabIds
число[]
Идентификаторы всех вкладок браузера, которые совместно используют это хранилище cookie.
FrameDetails
Детали, позволяющие идентифицировать раму.
Характеристики
- documentId
строка необязательная
Уникальный идентификатор документа. Если указаны frameId и/или tabId, они будут проверены на соответствие документу, найденному по указанному идентификатору.
- frameId
номер необязательный
Уникальный идентификатор фрейма внутри вкладки.
- tabId
номер необязательный
Уникальный идентификатор вкладки, содержащей фрейм.
OnChangedCause
Основная причина изменения файла cookie. Если файл cookie был вставлен или удалён посредством явного вызова «chrome.cookies.remove», «cause» будет «explicit». Если файл cookie был автоматически удалён из-за истечения срока действия, «cause» будет «expired». Если файл cookie был удалён из-за перезаписи с уже истёкшим сроком действия, «cause» будет установлено как «expired_overwrite». Если файл cookie был автоматически удалён в результате сборки мусора, «cause» будет «evicted». Если файл cookie был автоматически удалён из-за вызова «set», который его перезаписал, «cause» будет «overwrite». Спланируйте свой ответ соответствующим образом.
Перечисление
«выселены» "истекший" "явный" "expired_overwrite" "перезаписать"
SameSiteStatus
Состояние cookie-файла «SameSite» (https://tools.ietf.org/html/draft-west-first-party-cookies). «no_restriction» соответствует набору cookie-файлов с «SameSite=None», «lax» — «SameSite=Lax», а «strict» — «SameSite=Strict». «unspecified» соответствует набору cookie-файлов без атрибута SameSite.
Перечисление
"no_restriction" "слабый" "строгий" "неуказанный"
Методы
get()
chrome.cookies.get(
details: CookieDetails,
): Promise<Cookie | undefined>
Получает информацию об одном файле cookie. Если для заданного URL-адреса существует несколько файлов cookie с одинаковым именем, будет возвращен файл с самым длинным путем. Для файлов cookie с одинаковой длиной пути будет возвращен файл cookie с самым ранним временем создания.
Параметры
- подробности
Возврат
Обещание< Файл cookie | не определено>
Хром 88+
getAll()
chrome.cookies.getAll(
details: object,
): Promise<Cookie[]>
Извлекает все файлы cookie из одного хранилища, соответствующие заданной информации. Возвращаемые файлы cookie сортируются, начиная с файлов с самым длинным путём. Если несколько файлов cookie имеют одинаковую длину пути, первыми будут файлы с самым ранним временем создания. Этот метод извлекает файлы cookie только для доменов, к которым у расширения есть разрешения на хост.
Параметры
- подробности
объект
Информация для фильтрации получаемых cookie-файлов.
- домен
строка необязательная
Ограничивает извлеченные cookie-файлы теми, домены которых совпадают с данным или являются его поддоменами.
- имя
строка необязательная
Фильтрует файлы cookie по имени.
- partitionKey
CookiePartitionKey необязательно
Хром 119+Ключ раздела для чтения или изменения файлов cookie с атрибутом Partitioned.
- путь
строка необязательная
Ограничивает извлеченные cookie-файлы теми, путь которых точно соответствует этой строке.
- безопасный
логическое необязательное
Фильтрует файлы cookie по их свойству «Безопасность».
- сессия
логическое необязательное
Фильтрует сеансовые и постоянные файлы cookie.
- storeId
строка необязательная
Хранилище cookie-файлов, из которого нужно извлечь cookie-файлы. Если этот параметр пропущен, будет использоваться хранилище cookie текущего контекста выполнения.
- URL-адрес
строка необязательная
Ограничивает извлеченные cookie-файлы теми, которые соответствуют указанному URL-адресу.
Возврат
Обещание< Cookie []>
Хром 88+
getAllCookieStores()
chrome.cookies.getAllCookieStores(): Promise<CookieStore[]>
Перечисляет все существующие хранилища файлов cookie.
Возврат
Обещание< CookieStore []>
Хром 88+
getPartitionKey()
chrome.cookies.getPartitionKey(
details: FrameDetails,
): Promise<object>
Указан ключ раздела для кадра.
Параметры
- подробности
Возврат
Обещание<объект>
remove()
chrome.cookies.remove(
details: CookieDetails,
): Promise<object | undefined>
Удаляет куки-файл по имени.
Параметры
- подробности
Возврат
Обещание<объект | неопределенный>
Хром 88+
set()
chrome.cookies.set(
details: object,
): Promise<Cookie | undefined>
Устанавливает cookie-файл с указанными данными cookie-файла; может перезаписывать эквивалентные cookie-файлы, если они существуют.
Параметры
- подробности
объект
Подробная информация об устанавливаемом cookie-файле.
- домен
строка необязательная
Домен cookie-файла. Если не указан, cookie-файл становится только хостовым.
- Дата окончания срока
номер необязательный
Дата истечения срока действия cookie-файла, выраженная в секундах с начала эпохи UNIX. Если этот параметр не указан, cookie-файл становится сеансовым.
- httpOnly
логическое необязательное
Следует ли помечать cookie как HttpOnly. Значение по умолчанию — false.
- имя
строка необязательная
Имя файла cookie. Если не указано, по умолчанию пусто.
- partitionKey
CookiePartitionKey необязательно
Хром 119+Ключ раздела для чтения или изменения файлов cookie с атрибутом Partitioned.
- путь
строка необязательная
Путь к файлу cookie. По умолчанию соответствует части пути параметра URL.
- тот жеСайт
SameSiteStatus необязательно
Хром 51+Статус cookie-файла на том же сайте. По умолчанию — «не указано», т. е. если не указано, cookie-файл устанавливается без указания атрибута SameSite.
- безопасный
логическое необязательное
Следует ли пометить файл cookie как безопасный. Значение по умолчанию — false.
- storeId
строка необязательная
Идентификатор хранилища cookie, в котором необходимо установить cookie. По умолчанию cookie устанавливается в хранилище cookie текущего контекста выполнения.
- URL-адрес
нить
URI запроса для связи с настройкой cookie. Это значение может повлиять на значения домена и пути по умолчанию для создаваемого cookie. Если разрешения хоста для этого URL не указаны в файле манифеста, вызов API завершится ошибкой.
- ценить
строка необязательная
Значение cookie-файла. Если не указано, по умолчанию пусто.
Возврат
Обещание< Файл cookie | не определено>
Хром 88+
События
onChanged
chrome.cookies.onChanged.addListener(
callback: function,
)
Срабатывает при установке или удалении файла cookie. Обратите внимание, что обновление свойств файла cookie реализовано в виде особого случая: сначала файл cookie, подлежащий обновлению, полностью удаляется, что приводит к появлению уведомления с причиной «overwrite». После этого записывается новый файл cookie с обновлёнными значениями, что приводит к появлению второго уведомления с причиной «explicit».
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(changeInfo: object) => void
- changeInfo
объект
- причина
Основная причина изменения cookie-файла.
- печенье
Информация о cookie-файле, который был установлен или удален.
- удаленный
булев
True, если файл cookie был удален.