如何在Golang中查看cookieJar的内容?

时间:2016-02-24 05:24:47

标签: cookies go

我试图从谷歌请求中查看cookieJar响应的内容:

package main

import (
    "fmt"
    "log"
    "net/http"
    "net/http/cookiejar"
    "net/url"
)

func main() {

    jar, err := cookiejar.New(nil)
    if err != nil {
        log.Fatal(err)
    }
    client := http.Client{Jar: jar}
    resp, err := client.Get("https://accounts.google.com/ServiceLogin?continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Ffeature%3Dsign_in_button%26hl%3Den%26action_handle_signin%3Dtrue%26next%3D%252F%26app%3Ddesktop&service=youtube&sacu=1&passive=1209600&ignoreShadow=0&acui=0#identifier")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(resp.Cookies())

    s := ".google.com"
    u, err := url.Parse(s)
    fmt.Println(client.Jar.Cookies(u))

}

响应是一个空白数组,但我可以看到有设置的cookie。如何在Golang中查看cookieJar的内容?

2 个答案:

答案 0 :(得分:2)

不幸的是,std库中的cookie jar是完全不透明的,只能通过(非通配符)URL查询。

答案 1 :(得分:0)

尽管在net/http/cookiejar实现是不透明的意义上说,Volker在技术上是正确的,但是http.Client.Jar字段是一个接口(http.Client.CookieJar)。

因此可以定义和使用提供列表功能或将URL映射公开到cookie的实现。这种实现应基于std库的实现以利用其实现的安全功能。

如果有兴趣,我可能会提供一些示例代码。