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 IndexedDB i Cache Storage są dostępne w usługach Service Worker. Nie dotyczy to jednak pamięci lokalnej i pamię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.cookiew 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.