我试图从谷歌请求中查看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的内容?
答案 0 :(得分:2)
不幸的是,std库中的cookie jar是完全不透明的,只能通过(非通配符)URL查询。
答案 1 :(得分:0)
尽管在net/http/cookiejar
实现是不透明的意义上说,Volker在技术上是正确的,但是http.Client.Jar
字段是一个接口(http.Client.CookieJar
)。
因此可以定义和使用提供列表功能或将URL映射公开到cookie的实现。这种实现应基于std库的实现以利用其实现的安全功能。
如果有兴趣,我可能会提供一些示例代码。