【发布时间】:2021-09-25 20:15:56
【问题描述】:
我正在使用 http.Client 为某些生产资源发出 HTTP 请求。
此资源有两个不同的域,具有相同的业务逻辑 (例如:example.com、instance.com)。所以 example.com 的所有 cookie 对 instance.com 等都是有效的。
问题是我需要将相同的 cookie 发送到两个不同的域,这在 GoLang 中是不可能的。
func (*Jar) Cookies 为具有特定域的 url 返回 cookie,所以我必须调用一些 cookie 准备函数:
func (session *Session) PrepareCookiesForExample() {
example, _ := url.Parse("https://example.com")
session.client.Jar.SetCookies(example, session.client.Jar.Cookies(commu))
}
所以我必须在我的每个请求中调用这个函数,如果我忘记调用这个函数,这很不舒服并且可能导致错误(因为没有发送 cookie)。
如何使用 CookieJar 为所有域发送相同的 cookie?
【问题讨论】:
-
http.CookieJar是一个接口,因此您可以编写任何您想要的实现。如果您想在任何地方发送相同的 cookie,您可以通过编写自己的 CookieJar 实现来实现,或者通过包装现有的实现来修改行为。 -
感谢您的回答。我是 GoLang 的新手。您能否建议我如何创建方法
Cookies(u *url.URL) []*Cookie的自定义实现? -
net/http/cookiejar 不允许你做你想做的事。 Immerhin 实现自己的 Jar。 SO 不是代码编写服务。
-
那我该怎么办?如何解决我的问题?
标签: go networking cookies httpcookie