go 怎样带多个cookie 实现 Get 请求呢?

1.我想测试一下某个业务接口,接口需带cookie,Get请求,现在做了一个请求dvwa 的 demo,但是多个cookie得调用很多次req.AddCookie,代码如下:

//带有cookie的Get请求
func main(){

client := &http.Client{};
req, err := http.NewRequest("GET", "http://192.168.1.89/dvwa", nil);
cookie1 := &http.Cookie{Name:"PHPSESSID",Value:"26c2tkqumv2a2l4o34qtdcbs80",HttpOnly:true};
cookie2 := &http.Cookie{Name:"security",Value:"impossible",HttpOnly:true};
req.AddCookie(cookie1);
req.AddCookie(cookie2);
cookie,err := req.Cookie("security");
fmt.Println(cookie);
resp,err := client.Do(req);
if err != nil {
    panic(err.Error());
}
b, err := ioutil.ReadAll(resp.Body);
resp.Body.Close();
fmt.Printf("%s",b);

}

有更简单的方法吗,最好能就调用一次addCookie,
我的cookie是字符串格式的,除了http.cookie这种方法还有其他方法能转成*cookie吗

感激不尽!!

阅读 6.6k
1 个回答

用cookiejar

func main() {
    client := &http.Client{}
    req, _ := http.NewRequest("GET", "http://192.168.1.89/dvwa", nil)

    jar, _ := cookiejar.New(nil)
    jar.SetCookies(req.URL, []*http.Cookie{
        &http.Cookie{Name: "PHPSESSID", Value: "26c2tkqumv2a2l4o34qtdcbs80", HttpOnly: true},
        &http.Cookie{Name: "security", Value: "impossible", HttpOnly: true},
    })
    client.Jar = jar

    resp, err := client.Do(req)
    if err != nil {
        panic(err.Error())
    }
    b, err := ioutil.ReadAll(resp.Body)
    resp.Body.Close()
    fmt.Printf("%s", b)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题