Gdy serwer WWW odpowiada na żądanie zasobu, może dołączyć do odpowiedzi nagłówek Set-Cookie. Ten nagłówek informuje przeglądarkę, że ma zapisać plik cookie. Na przykład: Set-Cookie:cat=tabby.
W artykule Co to są pliki cookie? znajdziesz wyjaśnienie, jak działają pliki cookie.
Oprócz podania 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 pliku cookie są rozdzielone średnikami. Na przykład:
Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
W tym dokumencie wyjaśniamy najważniejsze atrybuty plików cookie:
Korzystanie z plików cookie HTTP zawiera bardziej szczegółowe wyjaśnienie atrybutów plików cookie.
Bezpieczeństwo
Jeśli nagłówek Set-Cookie zawiera Secure, plik cookie będzie dołączany tylko do zaszyfrowanych żądań, które korzystają 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 przeprowadzająca atak 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 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
skierowanych na pliki cookie.
SameSite
Żądanie zasobu z witryny innej niż ta, którą odwiedzasz, to żądanie pochodzące z innej witryny. Plik cookie ustawiony w odpowiedzi na żądanie z innej witryny to plik cookie innej firmy.
Atrybut SameSite decyduje o tym, czy plik cookie innej firmy zostanie uwzględniony w żądaniu. Może przyjmować 3 wartości: Strict, Lax lub None.
Więcej informacji znajdziesz w artykule Co to są pliki cookie innych firm?
Tryb rygorystyczny
Plik cookie będzie wysyłany tylko w odpowiedzi na żądania ze strony, która znajduje się w witrynie pochodzenia pliku cookie. Załóżmy na przykład, że użytkownik odwiedza stronę cats.example i ma ustawiony plik cookie z atrybutem SameSite=Strict. Później użytkownik odwiedza inną witrynę i klika link do strony w cats.example. Ustawiony plik cookie nie zostanie uwzględniony w tym żądaniu.
Lax
Działa to tak samo jak Strict, z tym że przeglądarka będzie też uwzględniać plik cookie, gdy użytkownik kliknie link do witryny, z której pochodzi plik cookie. (W poprzednim przykładzie Strict plik cookie zostałby uwzględniony, gdy użytkownik kliknie link do cats.example). Lax to wartość domyślna, jeśli w nagłówku Set-Cookie nie ma atrybutu SameSite.
Brak
Brak ograniczeń: plik cookie będzie dołączany do żądania niezależnie od tego, czy jest ono wysyłane do innej witryny. W przypadku SameSite=None plik cookie musi też mieć atrybut Secure.
Podzielona na partycje
Ten atrybut umożliwia włączenie plików cookie w partycjonowanej pamięci z osobnym „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 na przykład, że witryna A i witryna B zawierają element iframe z witryny C. Plik cookie z partycją ustawiony przez element iframe w witrynie A nie jest dostępny dla elementu 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).
Oddzielone pliki cookie muszą mieć atrybut Secure.
Więcej informacji: Cookies Having Independent Partitioned State (Pliki cookie z niezależnym stanem partycjonowanym).
Wygasa i Max-Age
Możesz określić Expires datę i godzinę lub Max-Age w sekundach, po których plik cookie ma zostać usunięty i nie będzie 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. Ten rodzaj pliku cookie jest czasami nazywany plikiem cookie sesji.
Domena
Jeśli nagłówek Set-Cookie ma atrybut Domain, plik cookie będzie dołączany do żądań wysyłanych do określonej domeny i jej subdomen.
Jeśli nagłówek Set-Cookie nie ma atrybutu Domain, plik cookie nie będzie dołączany do żądań wysyłanych do subdomen.
Innymi słowy, uwzględnienie atrybutu Domain ogranicza 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ń wysyłanych docats.exampleSet-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.exampleczyuser.assets.cats.example.
Ścieżka
Jeśli atrybut Path jest uwzględniony w nagłówku odpowiedzi Set-Cookie, ustawiony plik cookie będzie uwzględniany tylko w żądaniach wysyłanych do adresów URL (w witrynie, która ustawiła plik cookie!) zgodnych z wartością Path.
Na przykład:
Set-Cookie:cat=tabby; Path=/articles
Plik cookie zostanie uwzględniony w przypadku żądania dowolnej ś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.htmlSet-Cookie:cat=tabby; Path=/
Wszystkie żądania wysyłane do dowolnego adresu URL w witrynie będą zawierać ten plik cookie.
Jeśli nagłówek odpowiedzi Set-Cookie nie ma wartości Path, plik cookie będzie dołączany tylko do żądań w tym samym katalogu. Załóżmy na przykład, że w odpowiedzi na żądanie cats.example/images/tabby.jpg. ustawiany jest plik cookie cat=tabby. Jeśli nie ustawiono Path, plik cookie będzie uwzględniany tylko w żądaniach plików w katalogu cats.example/images.
Przykłady
- 1pc.glitch.me: demonstracja 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
- 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
- Wersje demonstracyjne plików cookie
- Korzystanie z plików cookie HTTP
- Objaśnienie plików cookie SameSite
- OWASP: Cookies