更改http.Client cookie值

时间:2018-04-01 16:01:49

标签: http go cookies client

我有下面的代码按预期工作,但是在第一次请求时,我有我想要的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管理。

1 个答案:

答案 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)