Podczas przechodzenia na pliki cookie podzielone na części w witrynie możesz napotkać nieoczekiwane działanie, jeśli w przypadku dowolnego klienta występują zarówno pliki cookie podzielone na części, jak i niepodzielone, o tych samych nazwach.
Ustawienie partycjonowanego pliku cookie nie zastępuje ani nie zastępuje istniejącego, podzielonego pliku cookie o tej samej nazwie. Oba będą istnieć, dopóki pliki cookie innych firm są włączone, ale w oddzielnych pojemnikach na pliki cookie. Gdy pliki cookie innych firm są wyłączone, akceptowane są tylko pliki cookie innych firm. Jeśli są dostępne oba pliki, nie można automatycznie rozróżnić, który z nich jest partycjonowany, a który nie. Może to prowadzić do nieoczekiwanego zachowania.
Możesz to zrobić na 2 sposoby: 1. Usuń zastępowany plik cookie. 2. Zmienianie nazw plików cookie
Najważniejsze kwestie
Przechodząc na partycjonowane pliki cookie, pamiętaj o tych kwestiach:
- Nie ma możliwości programowego określenia, czy plik cookie wysłany w żądaniu HTTP jest podzielony czy nie. Możesz jednak określić stan partycjonowania pliku cookie w zestawie narzędzi dla programistów Chrome. Za pomocą interfejsu CookieStore API możesz odróżnić podzielone od niepodzielonych plików cookie, które nie mają atrybutu
HttpOnly
. - Pliki cookie partycjonowane nie zastępują tych bez partycji – 2 dokładnie takie same pliki cookie (czyli z takimi samymi atrybutami, jak nazwa, domena i ścieżka) będą traktowane jako osobne pliki cookie, jeśli tylko jeden z nich ma atrybut
Partitioned
. - Najlepiej unikać sytuacji, w której w ramach tego samego wywołania sieci zwracane są zarówno pliki cookie z partycjami, jak i niepartycjonowane o tej samej nazwie.
Ustaw datę wygaśnięcia plików cookie, które zastępujesz.
Jeśli nie możesz zmienić nazwy witryny lub usługi, możesz utworzyć nowy, partycjonowany plik cookie z wygaśnięciem aktualnego, podzielonego na partycje pliku cookie. Chociaż nie ma sposobu na sprawdzenie, czy plik cookie jest partycjonowany, nagłówki Set-Cookie
z atrybutem Partitioned
nie mają wpływu na pliki cookie, które nie są partycjonowane.
W przykładzie poniżej pokazujemy, jak wygasać niepartycjonowany plik cookie o nazwie example
i nie mieć wpływu na partycjonowane pliki cookie, nawet jeśli mają taką samą nazwę. Jeśli plik cookie o nazwie cookieName
nie istnieje, zostanie on dodany lub zaktualizowany.
Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
Zmienianie nazw plików cookie
Najlepszym sposobem na zapewnienie płynnego przejścia jest użycie różnych nazw partycjonowanych i niepartycjonowanych plików cookie. Jeśli np. masz niepartycjonowany plik cookie o nazwie „example”, możesz go przenieść do partycjonowanego pliku cookie.
Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
Okres ważności pliku cookie nie jest udostępniany programowo, więc nie ma możliwości ustawienia okresu ważności nowego pliku cookie tak, aby był on zgodny z okresem ważności pliku niepartycjonowanego. Odświeżenie wartości pliku cookie podczas tego procesu może być pragmatyczne.
Utrzymywanie zarówno partycjonowanych, jak i niepartycjonowanych plików cookie
Rozważ zachowanie w okresie przejściowym 2 osobnych synchronizowanych plików cookie: jednego, który jest partycjonowany, a drugi nie. Możesz na przykład mieć pliki cookie auth
i auth-partitioned
, przy czym ten drugi został ustawiony za pomocą atrybutu Partitioned
.
Po każdej aktualizacji wartości należy spróbować ustawić oba pliki cookie.
- W przypadku klientów, którzy blokują pliki cookie innych firm, ale nie obsługują jeszcze technologii CHIPS: żaden plik cookie nie zostanie zaakceptowany.
- Na klientach, którzy blokują pliki cookie innych firm i obsługują CHIPS: plik cookie
auth
zostanie odrzucony, ale plik cookieauth-partitioned
zostanie zaakceptowany. - W przypadku klientów, którzy nie blokują plików cookie innych firm, niezależnie od tego, czy obsługują CHIPS, akceptowane są zarówno zasady
auth
, jak iauth-partitioned
.
Jeśli aplikacja musi odczytać plik cookie uwierzytelniania, najpierw poszukaj pliku auth-partitioned
. Jeśli jednak musisz tymczasowo cofnąć zmianę, możesz poszukać pliku auth
.
Gdy ustalisz, że większość użytkowników ma odświeżone pliki cookie, możesz wycofać plik cookie auth-partitioned
i dodać atrybuty partycji do zwykłego pliku cookie uwierzytelniania.