Подтвердить что ты не робот

Golang: как следить за местоположением с cookie

Если ответ на HTTP-запрос является перенаправлением (http-код 302) с файлом cookie,

как вы можете указать своему клиенту Go следовать за новым местоположением с полученным cookie?

в CURL, это может быть легко достигнуто установкой клиента с помощью:

 COOKIEFILE = ""
 AUTOREFERER = 1
 FOLLOWLOCATION = 1

как вы можете это сделать в Go?

4b9b3361

Ответ 1

С Go 1.1 вы можете использовать net/http/cookiejar для этого.

Вот рабочий пример:

package main

import (
    "golang.org/x/net/publicsuffix"
    "io/ioutil"
    "log"
    "net/http"
    "net/http/cookiejar"
)

func main() {
    options := cookiejar.Options{
        PublicSuffixList: publicsuffix.List,
    }
    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()
    if err != nil {
        log.Fatal(err)
    }
    log.Println(string(data))
}