2015-07-07 15 views
6

Oggi ho affrontato il termine "cookiejar" (pacchetto net/http/cookiejar). Ho cercato di raccogliere alcune informazioni a riguardo, ma non ho capito nulla di comprensibile. So che il cookie è coppia chiave/valore che il server invia a un client, ad esempio: Set-Cookie: foo=10, il browser lo memorizza localmente e quindi ogni browser di richiesta successivo invierà questi cookie al server, ad esempio: Cookie: foo=10.Qual è la differenza tra cookie e cookiejar?

Ok, ma che dire di cookiejar? Che cos'è e come appare?

+1

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

+0

Correlato in modo tangenziale: utilizzare https://github.com/gorilla/securecookie o sessioni se è necessario utilizzare i cookie per l'archiviazione dei dati. I cookie autenticati sono importanti per la sicurezza. – elithrar

risposta

15

Come descritto nella domanda, i cookie sono gestiti dai browser (client HTTP) e consentono di memorizzare le informazioni sui computer dei client che vengono inviate automaticamente dal browser alle richieste successive.

Se l'applicazione funge da client (ci si connette a server HTTP remoti utilizzando il pacchetto net/http), non esiste un browser che gestisca/gestisca i cookie. Con questo voglio dire memorizzare/ricordare i cookie che arrivano come intestazioni di risposta Set-Cookie: e allegarli alle successive richieste in uscita fatte allo stesso host/dominio. Anche i cookie hanno una data di scadenza che dovresti anche controllare prima di decidere di includerli nelle richieste in uscita.

Il tipo http.Client tuttavia consente di impostare un valore di tipo http.CookieJar e, se lo si fa, si avrà una gestione automatica dei cookie che altrimenti non esisterebbe o si dovrebbe fare da soli. Ciò consente di eseguire più richieste con il pacchetto net/http che il server vedrà come parte della stessa sessione come se fossero state create da un browser reale, poiché spesso le sessioni HTTP (gli ID di sessione) vengono mantenute utilizzando i cookie.

Il pacchetto net/http/cookiejar è un'implementazione di CookieJar che è possibile utilizzare immediatamente. Si noti che questa implementazione è solo in memoria, il che significa che se si riavvia l'applicazione, i cookie andranno persi.


Quindi, in pratica un HTTP cookie è un piccolo pezzo di dati inviati da un sito web e memorizzati nel browser web di un utente mentre l'utente sta passando in rassegna quel sito.

Cookiejar è un Go interface di un semplice responsabile del biscotto (per gestire i cookie di richiesta HTTP e intestazioni di risposta) e un implementation of that interface.

+3

Questa è una bella spiegazione. – Volker

Problemi correlati