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 rozszerzenia znajdziesz w browser.storage.
Miejsce na dane
W przypadku rozszerzeń często warto używać 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 różni się 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 za pomocą interfejsów API pamięci internetowej (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 API IndexedDB i Cache Storage są dostępne w usługach Service Worker. Pamięć lokalna i pamięć sesji nie są jednak usuwane.
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 kluczowane według pochodzenia.
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 mieć dostępu do tego samego miejsca na dane, które zwykle ma, gdy jest otwierana bezpośrednio.
Aby ograniczyć wpływ tego zjawiska na rozszerzenia, obowiązują 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 dołączony 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 których wymagany jest atrybut Secure:
Partycjonowanie i zachowanie atrybutu 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 na 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 podlegają zmianom w ramach Piaskownicy prywatności i są dostosowywane zgodnie z jej harmonogramem.
Interfejs API browser.cookies umożliwia kontrolowanie klucza partycji, który ma być używany w przypadku każdej metody interfejsu API. Więcej informacji znajdziesz w dokumentacji API.