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 określające, czy pliki cookie mają być ustawiane i kiedy wygasają. Atrybuty plików cookie są rozdzielane średnikami. Na przykład:
Set-Cookie:cat=tabby; Secure; HTTPOnly; 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
Jeśli nagłówek Set-Cookie
zawiera Secure
, plik cookie zostanie uwzględniony tylko w zaszyfrowanych żądaniach korzystających z protokołu HTTPS. Nie będzie on uwzględniony 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ć.
👉 Domyślnie w przypadku wszystkich plików cookie należy uwzględnić Secure
.
HTTPOnly
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.
👉 Domyślnie w przypadku wszystkich plików cookie należy uwzględnić HTTPOnly
. Pomiń ten element tylko wtedy, gdy chcesz ustawiać i pobierać wartości plików cookie za pomocą JavaScriptu.
SameSite
Żą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.
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
.
👉 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 zostaną zablokowane, jeśli obowiązują ograniczenia dotyczące plików cookie innych firm.
Dowiedz się więcej: Co to są pliki cookie innych firm?
Tryb rygorystyczny
Plik cookie będzie wysyłany tylko w odpowiedzi na żądania ze strony, która jest witryną docelową pliku cookie. Załóżmy np., ż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
.
Podzielona na partycje
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.
👉 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.

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
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.
👉 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ę.
Domena
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 dołączany tylko do żą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
.
👉 Jeśli nie musisz dołączać pliku cookie do żądań wysyłanych do subdomen, nie dołącz atrybutu Domain
.
Ścieżka
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 będzie uwzględniany 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
.
👉 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.
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