Хранение и файлы cookie

Расширения могут хранить файлы cookie и получать доступ к API веб-хранилища, как и обычный веб-сайт. Однако в некоторых случаях в расширениях они ведут себя по-разному.

См chrome.storage для получения информации об API расширения.

Хранилище

Часто желательно использовать API-интерфейсы хранилища веб-платформы в расширениях. В этом разделе рассматривается поведение этих API в контексте расширения, которое иногда может отличаться от того, как они ведут себя в Интернете.

Упорство

Хранилище расширений не очищается, когда пользователь удаляет данные просмотра . Это относится к любым данным, хранящимся с использованием API веб-хранилища (например, Local Storage и IndexedDB ).

По умолчанию на расширения распространяются обычные ограничения квоты на хранилище, которые можно проверить, вызвав navigator.storage.estimate() . Хранилище также может быть вытеснено из-за сильного нехватки памяти, хотя это случается редко. Чтобы избежать этого:

  • Запросите разрешение "unlimitedStorage" , которое влияет как на API расширений, так и на веб-хранилище, а также освобождает расширения от ограничений квот и вытеснения.
  • Вызовите navigator.storage.persist() для защиты от выселения.

Хранилище расширений является общим для источника расширения, включая работника службы расширений, любые страницы расширения (включая всплывающие окна и боковую панель) и закадровые документы. В сценариях контента вызов API веб-хранилища обеспечивает доступ к данным с главной страницы, на которую внедряется сценарий контента, а не с расширения.

Доступ в сервисные работники

API-интерфейсы IndexedDB и Cache Storage доступны в сервис-воркерах. Однако локальное хранилище и хранилище сеансов — нет.

Если вам нужен доступ к локальному хранилищу или хранилищу сеансов из сервис-воркера, используйте закадровый документ .

Разделение

Разделение — это когда для хранимых данных вводятся ключи, чтобы ограничить доступ к ним. Исторически хранилище определялось по происхождению.

Начиная с Chrome 115, разделение хранилища вносит изменения в определение ключей разделения, чтобы предотвратить определенные типы межсайтового отслеживания. На практике это означает, что если сайт A встраивает iframe, содержащий сайт B, сайт B не сможет получить доступ к тому же хранилищу, которое он обычно имеет при прямом переходе.

Чтобы смягчить влияние этого на расширения, применяются два исключения:

  • Если страница со схемой chrome-extension:// встроена в какой-либо сайт, разделение хранилища не будет применяться, и расширение получит доступ к своему разделу верхнего уровня.
  • Если страница со схемой chrome-extension:// включает iframe, а расширение имеет разрешения хоста для сайта, который оно встраивает, этот сайт также будет иметь доступ к своему разделу верхнего уровня.

Печенье

Файлы cookie позволяют хранить пары «ключ-значение», связанные с определенным доменом и путем. Они имеют ограниченную ценность в расширениях, но понимание их поведения может быть полезно, если у вас есть конкретный вариант использования или вы включили сторонний скрипт, который использует их в своей реализации.

Безопасные файлы cookie

Атрибут Secure cookie поддерживается только для схемы https:// . Следовательно, страницы chrome-extension:// не могут устанавливать файлы cookie с этим атрибутом.

Это также означает, что страницы расширений не могут использовать другие атрибуты файлов cookie, где требуется атрибут Secure :

Секционирование и поведение SameSite

Файлы cookie, установленные на страницах chrome-extension://, всегда используют SameSite=Lax . Следовательно, файлы cookie, установленные расширением в его собственном источнике, никогда не будут доступны во фреймах, и секционирование не имеет значения.

Для файлов cookie, связанных со сторонними сайтами, например, для стороннего сайта, загруженного во фрейм на странице расширения, или для запроса, сделанного со страницы расширения к стороннему источнику, файлы cookie ведут себя так же, как веб-сайт, за исключением два пути:

  • Сторонние файлы cookie никогда не блокируются даже в подфреймах, если страница верхнего уровня для данной вкладки является страницей chrome-extension:// .
  • Запросы от расширения к третьей стороне рассматриваются как запросы к тому же сайту, если у расширения есть разрешения хоста для третьей стороны. Это означает, что файлы cookie SameSite=Strict могут быть отправлены. Обратите внимание, что это относится только к сетевым запросам, а не к доступу через document.cookie в JavaScript, и не применяется, если сторонние файлы cookie заблокированы.

Обратите внимание, что настройки сторонних файлов cookie зависят от работы Privacy Sandbox и корректируются в соответствии с ее графиком .

API chrome.cookies обеспечивает контроль над ключом раздела, который можно использовать с каждым методом API. Дополнительную информацию см. в справочнике по API .