今天,我遇到了术语“ cookiejar”(程序包net/http/cookiejar)。我试图收集有关它的一些信息,但没有任何可理解的信息。我知道 cookie 是服务器发送给客户端的键/值对,例如:Set-Cookie: foo=10浏览器将其存储在本地,然后每个后续请求浏览器都会将这些cookie发送回服务器,例如:Cookie: foo=10。
net/http/cookiejar
Set-Cookie: foo=10
Cookie: foo=10
好的,但是 cookiejar 呢?这是什么,看起来如何?
正如您在问题中所描述的那样,Cookie由浏览器(HTTP客户端)管理,它们允许将信息存储在客户端计算机上,这些信息由浏览器根据后续请求自动发送。
如果您的应用程序充当客户端(使用该net/http程序包连接到远程HTTP服务器),则没有浏览器可以处理/管理Cookie。我的意思是存储/记住作为Set- Cookie:响应头到达的cookie,并将它们附加到对同一主机/域发出的后续出站请求。另外,cookie的失效日期还必须在决定将其包含在外发请求中之前进行检查。
net/http
Set- Cookie:
http.Client但是,该类型允许您设置type的值http.CookieJar,如果这样做,则将具有自动cookie管理,否则该cookie将不存在,或者您必须自己进行设置。这样一来,您就可以net/http对服务器将在同一个会话中看到的程序包进行多个请求,就像它们是由真实的浏览器发出的一样,因为HTTP会话(会话ID)通常是使用cookie维护的。
http.Client
http.CookieJar
该软件包net/http/cookiejar是一个CookieJar实现,您可以直接使用它。请注意,此实现仅在内存中进行,这意味着如果重新启动应用程序,则cookie将丢失。
因此,基本上, HTTP cookie 是从网站发送的一小段数据,并在用户浏览该网站时存储在用户的Web浏览器中。
Cookiejar 是简单cookie管理器的Go接口(用于管理HTTP请求和响应标头中的cookie)以及该接口的实现。