2014-11-29 2 views
2

Я использую go http client для получения запросов и клиент инициализируется с помощью cookiejar, однако массив cookie ответа пуст. Кто-нибудь понял, что я делаю неправильно?Перейти HTTP-клиент не возвращает файлы 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.

+0

'resp, err: = http.Get (u); fmt.Println (resp.Cookies()) - это все, что требуется для получения заголовков ответов set-cookie. Банку не требуется. Чтобы отладить это, я рекомендую печатать resp.StatusCode и resp.Header. Если вы не видите заголовки Set-Cookie в resp.Header, тогда сервер не устанавливает файлы cookie. –

+1

Убедитесь, что отправленные файлы являются действительными. Go может быть немного более строгим, чем Firefox. – Volker

ответ

2

Вы создать cookiejar, и вы можете использовать его, как показано в "how to follow location with cookie":

jar, err := cookiejar.New(&options) 
if err != nil { 
    log.Fatal(err) 
} 
client := http.Client{Jar: jar} // <============ 
resp, err := client.Get("http://dubbelboer.com/302cookie.php") 
if err != nil { 
    log.Fatal(err) 
} 
data, err := ioutil.ReadAll(resp.Body) 
resp.Body.Close() 

(introduced with Go1.1 as in this answer)

http.Client структура имеет:

// Jar specifies the cookie jar. 
    // If Jar is nil, cookies are not sent in requests and ignored 
    // in responses. 
    Jar CookieJar 

Как упоминается 3of3, вы делаете не нужно cookiejar к fetch a cookie:

for _, cookie := range r.Cookies() { 
    fmt.Fprint(w, cookie.Name) 
} 

Проверьте, если cookiejar еще пуст после прочитав полное тело ответа.

+0

Я использую cookiejar, как в обновленном предварительном просмотре кода, но все равно получаю пустой массив файлов cookie. – cobie

+0

@cobie все еще пуст * после * прочитав тело ответа? (Я отредактировал ответ) – VonC

+0

да это все равно – cobie