2015-07-07 46 views
6

Dzisiaj stanąłem przed terminem "cookiejar" (pakiet net/http/cookiejar). Próbowałem zebrać trochę informacji na ten temat, ale nie dostałem nic zrozumiałego. Wiem, że cookie to pary klucz/wartość, które serwer wysyła do klienta, na przykład: Set-Cookie: foo=10, przeglądarka przechowuje je lokalnie, a następnie każda kolejna przeglądarka żądań wyśle ​​te pliki cookie z powrotem na serwer, na przykład: Cookie: foo=10.Jaka jest różnica między cookie a cookiejar?

OK, ale co z cookiejar? Co to jest i jak to wygląda?

+1

Zobacz ['net/http.CookieJar'] (https://godoc.org/net/http#CookieJar). –

+0

Stycznie powiązane: użyj https://github.com/gorilla/securecookie lub sesji, jeśli potrzebujesz plików cookie do przechowywania danych. Uwierzytelnione pliki cookie są ważne dla bezpieczeństwa. – elithrar

Odpowiedz

15

Jak opisano w pytaniu, pliki cookie są zarządzane przez przeglądarki (klienci HTTP) i umożliwiają przechowywanie informacji na komputerach klientów, które są automatycznie wysyłane przez przeglądarkę przy kolejnych żądaniach.

Jeśli aplikacja działa jako klient (łączysz się ze zdalnymi serwerami HTTP przy użyciu pakietu net/http), nie ma przeglądarki, która obsłuży/będzie zarządzać plikami cookie. Mam tutaj na myśli przechowywanie/zapamiętywanie plików cookie, które przychodzą jako nagłówki odpowiedzi i dołączanie ich do kolejnych wysyłanych żądań do tego samego hosta/domeny. Również ciasteczka mają datę wygaśnięcia, którą należy również sprawdzić przed podjęciem decyzji o włączeniu ich do wniosków wychodzących.

Typ http.Client pozwala jednak ustawić wartość typu http.CookieJar, a jeśli to zrobisz, będziesz mieć automatyczne zarządzanie plikami cookie, które inaczej nie istniałoby lub musiałbyś to zrobić samodzielnie. Umożliwia to wykonywanie wielu żądań za pomocą pakietu net/http, który serwer zobaczy jako część tej samej sesji, tak jakby był wykonany przez prawdziwą przeglądarkę, ponieważ często sesje HTTP (identyfikatory sesji) są utrzymywane za pomocą plików cookie.

Pakiet net/http/cookiejar to implementacja CookieJar, której można użyć po wyjęciu z pudełka. Zauważ, że ta implementacja jest tylko w pamięci, co oznacza, że ​​jeśli ponownie uruchomisz swoją aplikację, pliki cookie zostaną utracone.


Więc w zasadzie HTTP cookie to mały kawałek danych przesyłanych z witryny internetowej i przechowywane w przeglądarce internetowej użytkownika, gdy użytkownik jest przeglądanie tej strony.

Cookiejar jest Go interface prostego menadżera ciasteczek (zarządzać cookies z żądania HTTP i nagłówków odpowiedzi) oraz implementation of that interface.

+3

To miłe wyjaśnienie. – Volker