一尘不染

cookie和cookiejar有什么区别?

go

今天,我遇到了术语“ cookiejar”(程序包net/http/cookiejar)。我试图收集有关它的一些信息,但没有任何可理解的信息。我知道
cookie 是服务器发送给客户端的键/值对,例如:Set-Cookie: foo=10浏览器将其存储在本地,然后每个后续请求浏览器都会将这些cookie发送回服务器,例如:Cookie: foo=10

好的,但是 cookiejar 呢?这是什么,看起来如何?


阅读 1393

收藏
2020-07-02

共1个答案

一尘不染

正如您在问题中所描述的那样,Cookie由浏览器(HTTP客户端)管理,它们允许将信息存储在客户端计算机上,这些信息由浏览器根据后续请求自动发送。

如果您的应用程序充当客户端(使用该net/http程序包连接到远程HTTP服务器),则没有浏览器可以处理/管理Cookie。我的意思是存储/记住作为Set- Cookie:响应头到达的cookie,并将它们附加到对同一主机/域发出的后续出站请求。另外,cookie的失效日期还必须在决定将其包含在外发请求中之前进行检查。

http.Client但是,该类型允许您设置type的值http.CookieJar,如果这样做,则将具有自动cookie管理,否则该cookie将不存在,或者您必须自己进行设置。这样一来,您就可以net/http对服务器将在同一个会话中看到的程序包进行多个请求,就像它们是由真实的浏览器发出的一样,因为HTTP会话(会话ID)通常是使用cookie维护的。

该软件包net/http/cookiejar是一个CookieJar实现,您可以直接使用它。请注意,此实现仅在内存中进行,这意味着如果重新启动应用程序,则cookie将丢失。


因此,基本上, HTTP cookie
是从网站发送的一小段数据,并在用户浏览该网站时存储在用户的Web浏览器中。

Cookiejar
是简单cookie管理器的Go接口(用于管理HTTP请求和响应标头中的cookie)以及该接口实现

2020-07-02