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.
Vedere ['net/http.CookieJar'] (https://godoc.org/net/http#CookieJar). –
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