转到HTTP客户端不返回cookie
我使用go http客户端发出get请求,客户端已经用cookiejar初始化,但是响应cookie数组是空的。有人知道我做错了什么吗转到HTTP客户端不返回cookie,http,cookies,go,Http,Cookies,Go,我使用go http客户端发出get请求,客户端已经用cookiejar初始化,但是响应cookie数组是空的。有人知道我做错了什么吗 jar, err := cookiejar.New(nil) if err != nil { log.Fatal(err) } s.http_client = &http.Client{Jar: jar} resp, _ := s.http_client.Get(s.url) fmt.Println(r
jar, err := cookiejar.New(nil)
if err != nil {
log.Fatal(err)
}
s.http_client = &http.Client{Jar: jar}
resp, _ := s.http_client.Get(s.url)
fmt.Println(resp.Cookies())
返回一个空数组,尽管我可以在firefox中看到返回的Cookies。您创建了一个,并且可以像在“”中看到的那样使用它:
如前所述,您不需要cookiejar来:
for _, cookie := range r.Cookies() {
fmt.Fprint(w, cookie.Name)
}
阅读完整的响应正文后,检查cookiejar是否仍然为空。我确实在更新的代码预览中使用了cookiejar,但仍然得到一个空的Cookie数组。@cobie阅读响应正文后Cookie是否仍然为空?(我已经编辑了答案)在Get()中读取响应头时使用cookie jar。稍后设置cookie jar将没有效果。在任何情况下,获取响应cookies都不需要cookie jar。@cobie
resp.cookies()
返回什么?(参见编辑答案的结尾)resp,err:=http.Get(u);fmt.Println(resp.Cookies())
是获取设置的cookie响应头所需的全部内容。不需要罐子。为了调试这个,我建议打印resp.StatusCode和resp.Header。如果在resp.Header中未看到Set Cookie Header,则服务器未设置Cookie。请确保发送的Cookie是有效的Cookie。Go可能比Firefox更严格。
// Jar specifies the cookie jar.
// If Jar is nil, cookies are not sent in requests and ignored
// in responses.
Jar CookieJar
for _, cookie := range r.Cookies() {
fmt.Fprint(w, cookie.Name)
}