Rozszerzenia mogą przechowywać pliki cookie i korzystać z internetowych interfejsów API pamięci masowej podobnie jak zwykła witryna. Jednak w niektórych przypadkach w rozszerzeniach zachowują się one inaczej.
Więcej informacji o interfejsie API rozszerzenia znajdziesz na stronie chrome.storage
.
Miejsce na dane
Często warto używać w rozszerzeniach interfejsów API pamięci masowej platformy internetowej. W tej sekcji omawiamy zachowanie tych interfejsów API w kontekście rozszerzenia, który może czasami różnić się w zależności od ich działania w internecie.
Trwałość
Pamięć rozszerzenia nie jest czyszczona, gdy użytkownik wyczyści dane przeglądania. Dotyczy to wszystkich danych przechowywanych przy użyciu interfejsów Web Storage API (takich jak Local Storage i IndexedDB).
Domyślnie rozszerzenia podlegają normalnym limitom miejsca na dane, które można sprawdzić, wywołując navigator.storage.estimate()
. Z powodu dużego obciążenia pamięci
pamięć może zostać zwolniona, ale jest to rzadkie. Aby tego uniknąć:
- Poproś o uprawnienie
"unlimitedStorage"
, które ma wpływ zarówno na interfejsy API rozszerzeń i pamięci internetowej, jak i wyklucza rozszerzenia z obowiązku ograniczania limitów oraz usuwania z niej. - Wywołaj
navigator.storage.persist()
, aby zabezpieczyć się przed usunięciem trwale.
Pamięć rozszerzeń jest współdzielona przez źródło rozszerzenia, m.in. przez skrypt usługi rozszerzeń, wszystkie strony rozszerzeń (w tym wyskakujące okienka i panel boczny) oraz dokumenty poza ekranem. Wywoływanie w skryptach treści internetowych interfejsów API pamięci masowej uzyskuje dostęp do danych ze strony hosta, na której wstrzyknięty jest skrypt treści, a nie do rozszerzenia.
Dostęp w skryptach service worker
Interfejsy API IndexedDB i Cache Storage są dostępne w mechanizmach Service Worker. Pamięć lokalna i Pamięć sesji już nie.
Jeśli potrzebujesz dostępu do pamięci lokalnej lub pamięci sesji z poziomu skryptu service worker, użyj dokumentu nieekranowego.
Partycjonowanie
Partycjonowanie polega na wprowadzaniu kluczy do przechowywanych danych w celu ograniczenia miejsc, w których można uzyskać do nich dostęp. W przypadku pamięci masowej w przypadku pamięci masowej kluczowano według źródła.
Począwszy od Chrome 115 partycjonowanie miejsca na dane wprowadza zmiany w sposobie definiowania kluczy partycjonowania, aby zapobiec niektórych rodzajom śledzenia w witrynach. W praktyce oznacza to, że jeśli w witrynie A umieszczono element iframe zawierający witrynę B, witryna B nie będzie miała dostępu do tego samego miejsca na dane, co zwykle po przejściu do niej bezpośrednio.
Aby ograniczyć wpływ tej zmiany w przypadku rozszerzeń, obowiązują 2 wyjątki:
- Jeśli w dowolnej witrynie jest umieszczona strona o schemacie
chrome-extension://
, partycjonowanie pamięci nie będzie działać, a rozszerzenie będzie mieć dostęp do partycji najwyższego poziomu. - Jeśli strona o schemacie
chrome-extension://
zawiera element iframe, a rozszerzenie ma uprawnienia hosta w przypadku umieszczonej witryny, ta witryna będzie też miała dostęp do partycji najwyższego poziomu.
Ciastka
Pliki cookie umożliwiają przechowywanie par klucz-wartość powiązanych z konkretną domeną i ścieżką. Rozszerzenia mają ograniczoną wartość, ale zrozumienie ich działania może być przydatne, jeśli masz konkretny przypadek użycia lub masz w pakiecie zewnętrzny skrypt, który używa ich do implementacji.
Bezpieczne pliki cookie
Atrybut pliku cookie Secure
jest obsługiwany tylko przez schemat https://
. Oznacza to, że strony chrome-extension://
nie mogą ustawiać plików cookie z tym atrybutem.
Oznacza to też, że strony z rozszerzeniami nie mogą używać innych atrybutów plików cookie, w 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 ustawiane przez rozszerzenie z własnego źródła nie są nigdy dostępne w ramkach, a partycjonowanie nie ma zastosowania.
W przypadku plików cookie powiązanych z witrynami zewnętrznymi, np. z witryn zewnętrznych wczytywanych w ramce na stronie rozszerzenia lub żądań wysyłanych ze strony rozszerzenia do stron zewnętrznych, pliki cookie zachowują się tak samo jak internet, ale różnią się między innymi:
- Pliki cookie innych firm nigdy nie są blokowane w ramkach podrzędnych, jeśli strona najwyższego poziomu danej karty jest stroną
chrome-extension://
. - Żądania z rozszerzenia wysyłane do innej firmy są traktowane jak żądania z tej samej witryny, jeśli rozszerzenie ma uprawnienia do hosta w przypadku firmy zewnętrznej. Oznacza to, że mogą być wysyłane
SameSite=Strict
pliki cookie. Pamiętaj, że dotyczy to tylko żądań sieciowych, a nie dostępu przezdocument.cookie
w JavaScript. Nie dotyczy też blokowania plików cookie innych firm.
Pamiętaj, że ustawienia dotyczące plików cookie innych firm zależą od działania Piaskownicy prywatności i są korygowane zgodnie z harmonogramem.
Interfejs API chrome.cookies
zapewnia kontrolę nad kluczem partycji na potrzeby poszczególnych metod API. Więcej informacji znajdziesz w dokumentacji interfejsu API.