搜索了很多文章,基本都是手动去设置cookies的值啥的,也有说new一个`http.Client{Jar: cookiejar.New(nil)}`的,我用了感觉没用。
想请问下非api的网站(就是第一次请求获取token,后续请求带token的)如何用net/http调用,下面是我目前每次请求前设置的代码,问了几个人说法众说纷坛的。。。,目前扫描的和一个需求都是登陆后要把header的cookies保持住后续每次请求都带上,go的http client这么麻烦吗,请大佬写个简单的demo
```
requestBody := strings.NewReader("username="+os.Getenv("username")+"&password="+ os.Getenv("password"))
req, err := http.NewRequest("POST", loginUrl, requestBody)
if err != nil {
fmt.Println(err)
}
resp, err := http.DefaultClient.Do(req)
.....
ac.Cookies = resp.Cookies()
------------
// 下一次请求
body := strings.NewReader(.....)
req, err := http.NewRequest("POST", commentUrl, body)
if err != nil {
fmt.Println(err)
}
req.Header.Set("X-Requested-With", "XMLHttpRequest")
for _, cookie := range ac.Cookies {
req.AddCookie(cookie)
}
resp, err := http.DefaultClient.Do(req)
...
```
更多评论
```go
func setCookie(w *http.ResponseWriter) {
cookie := http.Cookie{
Name: "token",
Value: "hello world",
HttpOnly: true,
}
http.SetCookie(w, &cookie)
}
func getCookie(r *http.Request) {
token, err := r.Cookie("token")
if err != nil {
panic("ohh")
}
fmt.Println(token)
}
```
#1