Atrybuty plików cookie

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:

Więcej informacji technicznych o atrybutach plików cookie znajdziesz w artykule Korzystanie z plików cookie HTTP.

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.

Jeśli nie ustawisz żadnej wartości, domyślnie zostanie użyta wartość

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.

Diagram pokazujący, że 2 różne witryny, które osadzają wspólny element innej firmy, nie będą już udostępniać plików cookie tej firmy.
Dzięki podziałowi plików cookie usługa innej firmy, która ustawia plik cookie po osadzeniu w jednej witrynie najwyższego poziomu, nie może uzyskać dostępu do tego samego pliku cookie, gdy usługa jest osadzona w innych witrynach najwyższego poziomu.

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 witryny cats.example.
  • Set-Cookie:cat=tabby; Domain=cats.example
    Plik cookie będzie dołączany do żądań do witryny cats.example, a także do wszystkich żądań zasobów w subdomenach, takich jak fluffy.cats.example czy user.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.html
  • Set-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

Narzędzia

Więcej informacji