我有下面的代码,可以按预期工作,但是在第一个请求时,我有我想要的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管理。
发布于 2018-04-02 02:38:39
要更改cookies的值,需要使用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)https://stackoverflow.com/questions/49599927
复制相似问题