Przejście z niepartycjonowanych plików cookie na partycjonowane pliki cookie

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:

  1. 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.
  2. 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.
  3. 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 authauth-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 cookie auth-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 i auth-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.