Pamięć i pliki cookie

Rozszerzenia mogą przechowywać pliki cookie i uzyskiwać dostęp do interfejsów API pamięci internetowej podobnie jak zwykła witryna. W niektórych przypadkach w rozszerzeniach działają one jednak inaczej.

Informacje o interfejsie API rozszerzeń znajdziesz w sekcji browser.storage.

Miejsce na dane

Często warto używać w rozszerzeniach interfejsów API platformy internetowej do przechowywania danych. W tej sekcji omawiamy działanie tych interfejsów API w kontekście rozszerzenia, które czasami może się różnić od ich działania w internecie.

Trwałość

Pamięć rozszerzenia nie jest czyszczona, gdy użytkownik usuwa dane przeglądania. Dotyczy to wszystkich danych przechowywanych za pomocą interfejsów Web Storage API (takich jak Local Storage i IndexedDB).

Domyślnie rozszerzenia podlegają normalnym ograniczeniom dotyczącym miejsca na dane, które można sprawdzić, wywołując funkcję navigator.storage.estimate(). Miejsce na dane może też zostać zwolnione w przypadku dużego obciążenia pamięci, ale zdarza się to rzadko. Aby tego uniknąć:

  • Poproś o uprawnienie "unlimitedStorage", które ma wpływ na interfejsy API rozszerzeń i pamięci internetowej oraz zwalnia rozszerzenia z ograniczeń dotyczących limitów i usuwania.
  • Zadzwoń pod numer navigator.storage.persist(), aby uzyskać ochronę przed eksmisją.

Pamięć rozszerzenia jest współdzielona w ramach jego pochodzenia, w tym przez skrypt service worker rozszerzenia, wszystkie strony rozszerzenia (w tym wyskakujące okienka i panel boczny) oraz dokumenty poza ekranem. W skryptach treści wywoływanie interfejsów API pamięci internetowej powoduje dostęp do danych ze strony hosta, na której wstrzyknięto skrypt treści, a nie z rozszerzenia.

Dostęp w usługach Service Worker

Interfejsy IndexedDBCache Storage są dostępne w usługach Service Worker. Nie dotyczy to jednak pamięci lokalnejpamięci sesji.

Jeśli chcesz uzyskać dostęp do pamięci lokalnej lub pamięci sesji z poziomu skryptu service worker, użyj dokumentu poza ekranem.

Partycjonowanie

Partycjonowanie polega na wprowadzeniu kluczy do przechowywanych danych, aby ograniczyć dostęp do nich. Miejsce na dane było historycznie powiązane z pochodzeniem.

Od Chrome 115 partycjonowanie miejsca na dane wprowadza zmiany w sposobie definiowania kluczy partycjonowania, aby zapobiegać niektórym rodzajom śledzenia w witrynach. W praktyce oznacza to, że jeśli witryna A umieści w ramce iframe witrynę B, witryna B nie będzie miała dostępu do tego samego miejsca na dane, do którego zwykle ma dostęp, gdy jest otwierana bezpośrednio.

Aby ograniczyć wpływ tej zmiany na rozszerzenia, wprowadziliśmy 2 wyjątki:

  • Jeśli strona ze schematem chrome-extension:// jest umieszczona w dowolnej witrynie, partycjonowanie pamięci nie będzie miało zastosowania, a rozszerzenie będzie miało dostęp do partycji najwyższego poziomu.
  • Jeśli strona ze schematem chrome-extension:// zawiera element iframe, a rozszerzenie ma uprawnienia hosta do witryny, którą osadza, ta witryna będzie też mieć dostęp do partycji najwyższego poziomu.

Pliki cookie

Pliki cookie umożliwiają przechowywanie par klucz-wartość powiązanych z określoną domeną i ścieżką. W przypadku rozszerzeń mają one ograniczoną wartość, ale zrozumienie ich działania może być przydatne, jeśli masz konkretny przypadek użycia lub masz powiązany skrypt innej firmy, który wykorzystuje je w swojej implementacji.

Bezpieczne pliki cookie

Atrybut pliku cookie Secure jest obsługiwany tylko w przypadku schematu https://. W związku z tym strony chrome-extension:// nie mogą ustawiać plików cookie z tym atrybutem.

Oznacza to również, że strony rozszerzenia nie mogą używać innych atrybutów plików cookie, w przypadku których wymagany jest atrybut Secure:

Partycjonowanie i zachowanie SameSite

Pliki cookie ustawione na stronach chrome-extension:// zawsze używają SameSite=Lax. W związku z tym pliki cookie ustawione przez rozszerzenie w jego własnym źródle nigdy nie będą dostępne w ramkach, a partycjonowanie nie ma znaczenia.

W przypadku plików cookie powiązanych z witrynami innych firm, np. witryną innej firmy wczytaną w ramce na stronie rozszerzenia lub żądaniem wysłanym ze strony rozszerzenia do domeny innej firmy, pliki cookie działają tak samo jak w internecie, z 2 wyjątkami:

  • Pliki cookie innych firm nigdy nie są blokowane, nawet w ramkach podrzędnych, jeśli strona najwyższego poziomu w danej karcie jest stroną chrome-extension://.
  • Żądania z rozszerzenia do firmy zewnętrznej są traktowane jako żądania z tej samej witryny, jeśli rozszerzenie ma uprawnienia hosta do tej firmy. Oznacza to, że SameSite=Strictmożna wysyłać pliki cookie. Pamiętaj, że dotyczy to tylko żądań sieciowych, a nie dostępu za pomocą document.cookie w JavaScript. Nie ma to też zastosowania, jeśli pliki cookie innych firm są blokowane.

Pamiętaj, że ustawienia dotyczące plików cookie innych firm są objęte pracami nad Piaskownicą prywatności i dostosowywane zgodnie z jej harmonogramem.

Interfejs API browser.cookies umożliwia kontrolowanie klucza partycji, który ma być używany z każdą metodą interfejsu API. Więcej informacji znajdziesz w dokumentacji API.