У меня есть приведенный ниже код, который работает по назначению, однако при первом запросе у меня есть нужные файлы 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 на стороне сервера.





Чтобы изменить значение файлов 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)