Document (rozszerzenie)#

document.cookie#

Właściwość cookie zwraca ciasteczka HTTP (HTTP cookies) w postaci tekstowej, które mają zastosowanie dla danego dokumentu lub ramki. Ciastka można dowolnie modyfikować, czyli kasować, zmieniać lub tworzyć nowe.

W przypadku odczytywania właściwości, wszystkie ciasteczka są zwracane w postaci pojedynczego łańcucha znakowego, gdzie każde ciasteczko wyrażane jest jako para nazwa=wartość, a poszczególne pary oddzielone są od siebie znakiem średnika (";"). W przypadku braku ciasteczek zwrócony zostanie pusty łańcuch.

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
ciastko1=wartość1;ciastko2=wartość2;ciastko3=wartość3;...

W przypadku ustawiania właściwości możliwe jest jedynie utworzenie/modyfikacja/kasacja jednego ciasteczka poprzez podanie łańcucha znakowego w postaci pary nazwa=wartość. Dodatkowo za wartość można jeszcze umieścić kolejne informacje na temat ciasteczka wyrażane za pomocą zapisu ;nazwa=wartość. Oto możliwości:

Wartość ciasteczka nie może zawierać przecinków, średników oraz znaków spacji. W razie potrzeby można zastosować globalne metody encodeURIComponent oraz decodeURIComponent do zakodowania i rozkodowania problematycznych znaków.

Należy zauważyć, że tylko nazwy i wartości ciasteczek mogą być pobierane za pomocą właściwości cookie, nie dotyczy to rozszerzonych informacji (czasu lub daty wygaśnięcia, domeny, ścieżki, flagi bezpieczeństwa).

Ustawienie wartości dla już istniejącego ciasteczka spowoduje zmianę starej wartości nową wartością. Parametr max-age jest nowszym rozwiązaniem wprowadzonym w protokole HTTP 1.1, aczkolwiek nie był wspierany przez przeglądarki IE (włącznie z wersją 8). Więcej na temat ważności ciasteczek można przeczytać w artykule "HTTP Cookies: What's the difference between Max-age and Expires?".

Ciasteczka to stary mechanizm z wieloma wadami. Najważniejszy z nich to problematyczny limit wielkości, zazwyczaj 50 ciasteczek na domenę o łącznej wielkości 4096 bajtów (4 KB), chociaż dokładne wartości są zależne od danej przeglądarki internetowej.

Kolejny problem związanym z klasycznymi ciasteczkami jest z aspekt wydajnościowy. Ciasteczka przesyłane są z każdym żadaniem HTTP, dlatego mogą powodować niepotrzebny wzrost przesyłanych danych oraz mogą mieć negatywny wpływ na czas działania strony WWW. Jeśli nie ma potrzeby wysyłania danych z każdym żądaniem HTTP najlepiej skorzystać z nowszych mechanizmów przechowywania danych po stronie użytkownika wprowadzonych przez HTML5, np. Web Storage, Indexed Database czy Offline Web Applications.

Prosty przykład:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
<script>

	document.write(document.cookie); // Pusty łańcuch - brak ustawionych ciasteczek

</script>

Oczywiście skrypt będzie miał dostęp do ciasteczek tylko w przypadku tego samego pochodzenia (zarówno skryptu jak i strony). Skrypty pochodzące z innych domen nie mogą odczytywać ciasteczek strony bieżącej. W HTML5 można dodatkowo umieszczać zawartość w piaskownicy (np. dla elementu iframe z atrybutem sandbox), dzięki czemu dostęp do ciasteczek zostanie stale zablokowany a próba dostępu i zmiany zwróci błąd SecurityError.

Ponieważ właściwość cookie jest dostępna między ramkami frames, możliwości ograniczania ciasteczek poprzez ścięzkę są tylko narzędziem pomagającym zarządzać, które pliki cookie są wysyłane do poszczególnych części strony, i nie są w żadnym wypadku funkcjami bezpieczeństwa.

W zasobach WWW znajduje się wiele gotowych bibliotek lub funkcji ułatwiających kompleksowe odczytywanie i manipulację ciasteczkami. W razie potrzeby można napisać własny lub zmodyfikować już istniejący kod.

Interfejs Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
attribute DOMString cookie;

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Document (rozszerzenie) (H1) document.cookie (H2) Interfejs Web IDL (H3) Specyfikacje i inne materiały (H3)