转到HTTP客户端不返回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

我使用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(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)
}