Gdy serwer WWW odpowiada na żądanie zasobu, może w odpowiedzi umieścić nagłówek Set-Cookie
. Ten nagłówek informuje przeglądarkę, aby zapisała plik cookie. Na przykład: Set-Cookie:cat=tabby
.
W artykule Co to są pliki cookie znajdziesz informacje o ich działaniu.
Oprócz nazwy i wartości pliku cookie Set-Cookie
może zawierać atrybuty, które określają, czy pliki cookie są ustawiane i kiedy wygasają. Atrybuty plików cookie są rozdzielane średnikami. Na przykład:
Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
W tym artykule opisujemy najważniejsze atrybuty plików cookie:
W artykule Używanie plików cookie HTTP znajdziesz bardziej szczegółowe informacje na temat atrybutów plików cookie.
Bezpieczne
👉 Domyślnie w przypadku wszystkich plików cookie należy uwzględnić Secure
.
Jeśli nagłówek Set-Cookie
zawiera Secure
, plik cookie zostanie uwzględniony tylko w zaszyfrowanych żądaniach, które korzystają z protokołu HTTPS. Nie będzie on uwzględniany w żądaniach HTTP. Pomaga to zapobiegać atakom pośrednim, w których osoba przeprowadzająca atak potajemnie wtrąca się w komunikację między przeglądarką a serwerem, aby przekazać informacje i potencjalnie je zmodyfikować.
HTTPOnly
👉 Domyślnie w przypadku wszystkich plików cookie należy uwzględnić HTTPOnly
. Pomiń tylko wtedy, gdy potrzebujesz dostępu do JavaScript.
Jeśli nagłówek Set-Cookie
zawiera HTTPOnly
, nie można uzyskać dostępu do pliku cookie za pomocą document.cookie
. Pomaga to chronić przed pewnymi typami ataków, które dotyczą plików cookie.
SameSite
👉 SameSite=Lax
to wartość domyślna, jeśli nie zostanie ustawiona żadna inna wartość. SameSite=None
zezwala na pliki cookie w wielu witrynach, ale oznacza to, że pliki cookie będą blokowane, gdy obowiązują ograniczenia dotyczące plików cookie innych firm.
Żądanie zasobu z witryny innej niż ta, którą przeglądasz, to żądanie międzywitrynowe. Plik cookie ustawiony w odpowiedzi na żądanie dotyczące wielu witryn jest nazywany plikiem cookie strony trzeciej. Dowiedz się więcej: Co to są pliki cookie innych firm?
Atrybut SameSite
określa, czy żądanie będzie zawierać plik cookie zewnętrznego źródła. Ma 3 możliwe wartości: Strict
, Lax
i None
.
Tryb rygorystyczny
Plik cookie będzie wysyłany tylko w odpowiedzi na żądania z witryny, która jest witryną docelową pliku cookie. Załóżmy na przykład, że użytkownik odwiedza witrynę cats.example
i ma ustawiony plik cookie z atrybutem SameSite=Strict
. Później użytkownik znajduje się w innej witrynie i klika link do strony w witrynie cats.example
. Ustawione wcześniej pliki cookie nie zostaną uwzględnione w tym żądaniu.
Lax
Działa to tak samo jak w przypadku zasady Strict
, z tym że przeglądarka będzie też zawierać plik cookie, gdy użytkownik kliknie link do witryny źródłowej pliku cookie. (w poprzednim przykładzie Strict
plik cookie zostałby uwzględniony, gdy użytkownik kliknie link do cats.example
). Jeśli w nagłówku Set-Cookie
nie ma atrybutu SameSite
, domyślnie jest używany parametr Lax
.
Brak
Bez ograniczeń: plik cookie będzie dołączany do żądania niezależnie od tego, czy jest to żądanie międzywitrynowe. W przypadku atrybutu SameSite=None
plik cookie musi też mieć atrybut Secure
.
Dowiedz się więcej: Objaśnienie plików cookie SameSite.
Podzielona na partycje
👉 Jeśli tworzysz plik cookie zewnętrznego, domyślnie powinieneś uwzględnić atrybut Partitioned
, chyba że wiesz, że musi być udostępniany w ramach wielu wbudowanych treści.
Ten atrybut umożliwia dodanie pliku cookie do partycjonowanego magazynu z osobnym „kontenerem na pliki cookie” dla każdej witryny najwyższego poziomu. Plik cookie ma podwójny klucz: klucz domeny najwyższego poziomu oraz domeny, w której został ustawiony.
Załóżmy na przykład, że witryna A i witryna B zawierają ramkę iframe z witryny C. Tag iframe w witrynie B nie ma dostępu do oddzielonego pliku cookie ustawionego przez tag iframe w witrynie A: plik cookie AC jest oddzielony od pliku cookie BC.
Pliki cookie z atrybutem Partitioned
to pliki cookie o niezależnym stanie partycji (ang. Cookies Having Independent Partitioned State, CHIPS).
Oddzielone pliki cookie muszą mieć atrybut Secure
.
Dowiedz się więcej: Pliki cookie z niezależnym stanem partycji.
Expires i Max-Age
👉 Pomiń atrybuty Max-Age
i Expires
, chyba że chcesz, aby plik cookie był aktywny dłużej niż trwająca sesja. Przeglądarki wygaszają pliki cookie, więc nie ma sensu ustawianie daty wygaśnięcia na kilka lat w przyszłości. Zamiast tego rozważ odświeżanie plików cookie, gdy użytkownik ponownie odwiedza Twoją witrynę.
Możesz określić datę i godzinę Expires
lub czas Max-Age
w sekundach, po którym plik cookie powinien zostać usunięty i nie powinien być już wysyłany. Na przykład:
Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
Set-Cookie:cat=tabby; Max-Age=86400
Jeśli nie określisz atrybutu Max-Age
ani Expires
, plik cookie zostanie usunięty po zakończeniu bieżącej sesji. Taki plik cookie jest czasami nazywany plikiem cookie sesji.
Domena
👉 Jeśli nie musisz dołączać pliku cookie do żądań wysyłanych do subdomen, nie dołącz atrybutu Domain
.
Jeśli nagłówek Set-Cookie
zawiera atrybut Domain
, plik cookie zostanie dołączony do żądań wysyłanych do określonej domeny i do wszystkich jej subdomen.
Jeśli nagłówek Set-Cookie
nie zawiera atrybutu Domain
, plik cookie nie będzie uwzględniany w żądaniach do poddomen.
Innymi słowy, dodanie atrybutu Domain
zmniejsza ograniczenia dotyczące domen.
Na przykład w przypadku odpowiedzi z witryny cats.example
:
Set-Cookie:cat=tabby
Plik cookie będzie uwzględniany tylko w przypadku żądań wysyłanych docats.example
Set-Cookie:cat=tabby; Domain=cats.example
Plik cookie będzie dołączany do żądań wysyłanych docats.example
, a także do żądań zasobów w subdomenach, takich jakfluffy.cats.example
czyuser.assets.cats.example
.
Ścieżka
👉 Uwzględnij Path=/
z plikiem cookie, jeśli chcesz, aby wszystkie żądania dotyczące dowolnej ścieżki na Twojej stronie zawierały plik cookie. Nie polegaj na Path
w kwestii bezpieczeństwa.
Jeśli atrybut Path
jest uwzględniony w nagłówku odpowiedzi Set-Cookie
, ustawiona w nim cookie zostanie uwzględniona tylko w żądaniach do adresów URL (w witrynie, w której została ustawiona), które pasują do wartości Path
.
Na przykład:
Set-Cookie:cat=tabby; Path=/articles
Plik cookie zostanie dołączony do żądania ścieżki adresu URL, która zaczyna się od/articles
:
✅https://cats.example/articles/tabby/index.html
✅https://cats.example/articles/breeds/tabby/index.html
❎https://cats.example/images/tabby.jpg
❎https://cats.example/en/articles/tabby/index.html
Set-Cookie:cat=tabby; Path=/
Wszystkie żądania dotyczące dowolnego adresu URL w witrynie będą zawierać plik cookie.
Jeśli nagłówek odpowiedzi Set-Cookie
nie zawiera wartości Path
, plik cookie zostanie uwzględniony tylko w żądaniach do tego samego katalogu. Wyobraź sobie na przykład, że plik cookie cat=tabby
jest ustawiany w odpowiedzi na żądanie cats.example/images/tabby.jpg.
. Jeśli nie ustawisz wartości Path
, plik cookie będzie uwzględniany tylko w żądaniach plików w katalogu cats.example/images
.
Prezentacje
- 1pc.glitch.me: demonstracja własnego pliku cookie
- 3pc.glitch.me: demonstracja plików cookie innych firm
Narzędzia
- Wyświetlanie, dodawanie, edytowanie i usuwanie plików cookie w Narzędziach deweloperskich Chrome
- Privacy Sandbox Analysis Tool