我有下面的代码按预期工作,但是在第一次请求时,我有我想要的cookie,并且只想在发送另一个请求之前更改1个cookie的值。到目前为止,我一直没有成功。
jar, err := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List})
if err != nil {
log.Fatal(err)
}
client = &http.Client{
Jar: jar,
}
firstRequest() // aka login
mainLinkedinURL := "http://www.example.com/"
cookieURL, _ := url.Parse(mainLinkedinURL)
for j, i := range jar.Cookies(cookieURL) {
if i.Name == "JSESSIONID" {
jar.Cookies(cookieURL)[j].Value = "Another New Value"
i.Value = "Another way of setting a new value"
}
}
secondRequest() // request after changing cookie
这仅来自http.Client透视图,并且没有服务器端cookie管理。
答案 0 :(得分:0)
要更改Cookie的值,您需要使用SetCookies方法 因为您只需要更改单个cookie值,就需要这样的内容:
mainLinkedinURL := "http://www.example.com/"
cookieURL, err := url.Parse(mainLinkedinURL)
if err != nil {
// handle error properly
}
cookies := jar.Cookies(cookieURL)
for _, cookie := range cookies {
// note: if there is no cookie with such a name
// then a new value would not appear, please pay attention to this
if cookie.Name == "JSESSIONID" {
cookie.Value = "Another New Value"
break
}
}
jar.SetCookies(cookieURL, cookies)