【发布时间】:2021-04-22 03:57:45
【问题描述】:
我正在构建一个与其他服务器交互的小型服务。 我必须向该服务器发送一个带有会话令牌的 cookie。以后用它来做我的识别。但是那个cookie没有设置。并且没有 cookie 被发回。 该请求是通过 https 协议发出的。
代码如下:
// ---> create Client
client := &http.Client{}
// ---> create Request
req, err := http.NewRequest("GET", indexURL, nil)
if err != nil {
fmt.Printf("NewRequest fail: %s\n", err)
}
// ---> define a cookie
cookie := http.Cookie{Name: "sess", Value: "value", HttpOnly: true, MaxAge: 0, Path: "/", Domain: "the.server.domain"}
req.AddCookie(&cookie)
// ---> fire in the hole!
resp, err := client.Do(req)
if err != nil {
fmt.Printf("client.Do fail: %s\n", err)
}
defer resp.Body.Close()
// ---> read the cookies
fmt.Printf("cookies: %d\n", len(resp.Cookies())) // prints zero (((
// ---> not even launched ((
for _, cookie := range resp.Cookies() {
fmt.Printf("GET cookie[%s] = %s\n", cookie.Name, cookie.Value)
}
我做错了什么?
我也试过了
req.Header.Set(`Cookie`, `sess=value`)
但没有效果
【问题讨论】:
-
服务器发回该会话令牌。当我在浏览器中检查时 - 我正确接收到发送的 cookie
-
没有足够的信息来确定服务器为什么没有响应 Set-Cookie 标头。代码正确发送了请求 Cookie 标头。可能 cookie 名称或值无效,或者服务器正在请求中寻找其他内容。什么是 response.StatusCode?这可能会为正在发生的事情提供线索。
-
请求 Cookie 上的名称和值以外的设置是无意义的。
-
Hannah89,response.StatusCode 正确 - 200。
标签: go cookies https httprequest