今天我面对的是" cookiejar" (包net/http/cookiejar
)。我试图收集一些有关它的信息,但没有得到任何理解。我知道 cookie 是服务器发送给客户端的键/值对,例如:Set-Cookie: foo=10
,浏览器将其存储在本地,然后每个后续请求浏览器将这些cookie发送回服务器,例如:Cookie: foo=10
。
好的,但 cookiejar 怎么样?它是什么以及它看起来如何?
答案 0 :(得分:24)
正如您在问题中所述,Cookie由浏览器(HTTP客户端)管理,它们允许在客户端计算机上存储信息,这些信息由浏览器在后续请求中自动发送。
如果您的应用程序充当客户端(使用net/http
程序包连接到远程HTTP服务器),则没有可以处理/管理cookie的浏览器。我的意思是存储/记住以Set-Cookie:
响应标头到达的cookie,并将它们附加到对同一主机/域进行的后续传出请求。 Cookie也有截止日期,在决定将它们包含在传出请求中之前,您还必须检查它。
然而,http.Client
类型允许您设置类型http.CookieJar
的值,如果您这样做,您将拥有自动cookie管理,否则将不存在或您必须自己进行。这使您可以使用net/http
包对服务器作为同一会话的一部分进行多个请求,就像它们是由真实浏览器制作一样,因为通常使用cookie维护HTTP会话(会话ID)
包net/http/cookiejar
是一个CookieJar实现,您可以直接使用它。请注意,此实现仅在内存中,这意味着如果重新启动应用程序,cookie将丢失。
所以基本上HTTP cookie是从网站发送的一小段数据,当用户浏览该网站时存储在用户的网络浏览器中。
Cookiejar 是简单Cookie管理器的Go interface(用于管理来自HTTP请求和响应标头的Cookie)和implementation of that interface。
答案 1 :(得分:0)
通常,它是一个数据存储,应用程序(无论是否使用浏览器)会将请求和响应期间使用的cookie放入其中。因此,它实际上是一个饼干罐。