http リクエストへの応答が Cookie を使用したリダイレクト (http コード 302) の場合、
受信した Cookie を使用して新しい場所をたどるように Go クライアントに指示するにはどうすればよいでしょうか?
CURL では、クライアントを次のように設定することで簡単に実現できます。
COOKIEFILE = ""
AUTOREFERER = 1
FOLLOWLOCATION = 1
Goでどうやってそれを行うことができますか?
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))
}