Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between cookie and cookiejar?

Today I faced the term "cookiejar" (package net/http/cookiejar). I tried to gather some information regarding it, but got nothing intelligible came out. I know that cookie is key/value pairs that server sends to a client, eg: Set-Cookie: foo=10, browser stores it locally and then each subsequent request browser will send these cookies back to the server, eg: Cookie: foo=10.

Ok, but what about cookiejar? What is it and how does it look like?

like image 972
Timur Fayzrakhmanov Avatar asked Jul 07 '15 13:07

Timur Fayzrakhmanov


People also ask

What is a Cookiejar?

noun. a jar or other container for storing cookies. such a container used for storing money.

What is difference between cookies and Httpsession?

Http is a stateless protocol; cookies allow us to track the state of the application using small files stored on the user's computer. The path were the cookies are stored depends on the browser.

How are cookies different from session tracking?

Cookies and Sessions are used to store information. Cookies are only stored on the client-side machine, while sessions get stored on the client as well as a server. A session creates a file in a temporary directory on the server where registered session variables and their values are stored.


1 Answers

As you described in your question, cookies are managed by browsers (HTTP clients) and they allow to store information on the clients' computers which are sent automatically by the browser on subsequent requests.

If your application acts as a client (you connect to remote HTTP servers using the net/http package), then there is no browser which would handle / manage the cookies. By this I mean storing/remembering cookies that arrive as Set-Cookie: response headers, and attaching them to subsequent outgoing requests being made to the same host/domain. Also cookies have expiration date which you would also have to check before deciding to include them in outgoing requests.

The http.Client type however allows you to set a value of type http.CookieJar, and if you do so, you will have automatic cookie management which otherwise would not exist or you would have to do it yourself. This enables you to do multiple requests with the net/http package that the server will see as part of the same session just as if they were made by a real browser, as often HTTP sessions (the session ids) are maintained using cookies.

The package net/http/cookiejar is a CookieJar implementation which you can use out of the box. Note that this implementation is in-memory only which means if you restart your application, the cookies will be lost.


So basically an HTTP cookie is a small piece of data sent from a website and stored in a user's web browser while the user is browsing that website.

Cookiejar is a Go interface of a simple cookie manager (to manage cookies from HTTP request and response headers) and an implementation of that interface.

like image 160
icza Avatar answered Oct 04 '22 08:10

icza