Gdy serwer WWW odpowiada na żądanie zasobu, może dołączyć do odpowiedzi nagłówek Set-Cookie. Ten nagłówek informuje przeglądarkę, aby zapisała plik cookie.
Przykład: Set-Cookie:cat=tabby.
Oprócz nazwy i wartości pliku cookie nagłówek Set-Cookie może zawierać atrybuty określające, czy pliki cookie są ustawiane i kiedy wygasają. Atrybuty plików cookie są rozdzielone średnikami. Przykład:
Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
W tym dokumencie znajdziesz informacje o najważniejszych atrybutach plików cookie:
Secure
Jeśli nagłówek Set-Cookie zawiera atrybut Secure, plik cookie będzie dołączany tylko do zaszyfrowanych żądań korzystających z protokołu HTTPS. Nie będzie on dołączany do żądań HTTP. Może to pomóc w zapobieganiu
atakom pośrednim,
w których osoba atakująca potajemnie ingeruje w komunikację między
przeglądarką a serwerem, aby przekazywać informacje i potencjalnie je zmieniać.
HTTPOnly
Jeśli nagłówek Set-Cookie zawiera atrybut HTTPOnly, JavaScript nie może uzyskać dostępu do pliku cookie, np. za pomocą document.cookie. Pomaga to chronić przed niektórymi rodzajami ataków, które są wymierzone w pliki cookie.
SameSite
Żądanie zasobu z witryny innej niż ta, którą odwiedzasz, jest żądaniem z innej witryny. Plik cookie ustawiony w odpowiedzi na żądanie z innej witryny jest plikiem cookie innej firmy.
Atrybut SameSite określa, czy plik cookie innej firmy zostanie uwzględniony w żądaniu. Może mieć 3 wartości: Strict, Lax lub None.
Więcej informacji: Co to są pliki cookie innych firm?
Strict
Plik cookie będzie wysyłany tylko w odpowiedzi na żądania ze strony, która znajduje się w witrynie źródłowej pliku cookie. Załóżmy, że użytkownik odwiedza witrynę cats.example i ma ustawiony plik cookie z atrybutem SameSite=Strict. Później użytkownik jest w innej witrynie i klika link do strony w witrynie cats.example. Ustawiony plik cookie nie zostanie uwzględniony w tym żądaniu.
Lax
Działa tak samo jak Strict, z tą różnicą, że przeglądarka będzie też uwzględniać plik cookie, gdy użytkownik kliknie link do witryny źródłowej pliku cookie. (W poprzednim przykładzie z atrybutem Strict plik cookie zostałby uwzględniony, gdy użytkownik kliknie link do witryny cats.example). Jeśli w nagłówku Set-Cookie nie ma atrybutu SameSite, domyślnie używana jest wartość Lax.
None
Brak ograniczeń: plik cookie będzie uwzględniany w żądaniu niezależnie od tego, czy jest to żądanie z innej witryny. W przypadku atrybutu SameSite=None plik cookie musi też mieć atrybut Secure.
Partitioned
Ten atrybut umożliwia włączenie pliku cookie w podzielonym magazynie, z oddzielnym "słoikiem na pliki cookie" dla każdej witryny najwyższego poziomu. Plik cookie jest podwójnie kluczowany – przez witrynę najwyższego poziomu i domenę, która go ustawia.
Załóżmy, że witryna A i witryna B zawierają element iframe z witryny C. Element iframe w witrynie A nie może uzyskać dostępu do podzielonego pliku cookie ustawionego przez element iframe w witrynie B. Plik cookie AC jest oddzielony od pliku cookie BC.
Pliki cookie z atrybutem Partitioned są nazywane CHIPS (Cookies Having Independent Partitioned State).
Podzielone pliki cookie muszą mieć atrybut Secure.
Więcej informacji: Cookies Having Independent Partitioned State.
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 będzie już wysyłany. 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. Tego rodzaju pliki cookie są czasami nazywane plikami cookie sesji.
Domena
Jeśli nagłówek Set-Cookie ma atrybut Domain, plik cookie będzie dołączany do żądań do określonej domeny i wszystkich jej subdomen.
Jeśli nagłówek Set-Cookie nie ma atrybutu Domain, plik cookie nie będzie dołączany do żądań do subdomen.
Innymi słowy, dołączenie atrybutu Domain zmniejsza ograniczenia domeny.
Na przykład w przypadku odpowiedzi z witryny cats.example:
Set-Cookie:cat=tabby
Plik cookie będzie dołączany tylko do żądań do witrynycats.example.Set-Cookie:cat=tabby; Domain=cats.example
Plik cookie będzie dołączany do żądań do witrynycats.example, a także do wszystkich żądań zasobów w subdomenach, takich jakfluffy.cats.exampleczyuser.assets.cats.example
Ścieżka
Jeśli w nagłówku odpowiedzi Set-Cookie jest atrybut Path, ustawiony plik cookie będzie dołączany tylko do żądań adresów URL (w witrynie, która ustawiła plik cookie!), które pasują do wartości Path.
Przykład:
Set-Cookie:cat=tabby; Path=/articles
Plik cookie będzie dołączany do żądań wszystkich ścieżek adresu URL, które zaczynają 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.htmlSet-Cookie:cat=tabby; Path=/
Plik cookie będzie dołączany do wszystkich żądań do dowolnego adresu URL w witrynie.
Jeśli nagłówek odpowiedzi Set-Cookie nie ma wartości Path, plik cookie będzie dołączany tylko do żądań do tego samego katalogu. Załóżmy, że
plik cookie cat=tabby jest ustawiany w odpowiedzi na żądanie
cats.example/images/tabby.jpg. Jeśli nie ustawisz atrybutu Path, plik cookie będzie dołączany tylko do
żądań plików w katalogu cats.example/images.
Prezentacje
- 1pc.glitch.me: prezentacja własnych plików cookie
- 3pc.glitch.me: prezentacja plików cookie innych firm
Narzędzia
- Wyświetlanie, dodawanie, edytowanie i usuwanie plików cookie w Narzędziach deweloperskich w Chrome
- rozszerzenie Privacy Sandbox Analysis Tool
Więcej informacji
- Przepisy na własne pliki cookie
- Co to są pliki cookie?
- Co to są pliki cookie innych firm?
- Żądanie i odpowiedź HTTP
- Narzędzia do obsługi plików cookie
- Prezentacje plików cookie
- Korzystanie z plików cookie HTTP
- Objaśnienie plików cookie SameSite
- OWASP: Cookies