我想获得一个名为 Set-Cookie 的标头元素,它位于身份验证服务的响应中。我进行 http 调用以从远程服务器获取数据:resp, err := client.Do(httpRequest)登录后,响应如下:fmt.Println(resp.Header)// the result is:// map[Cache-Control:[private] Content-Length:[0] Content-Security-Policy:[frame-ancestors 'self'] Date:[Tue, 01 Sep 2020 06:44:02 GMT] Expires:[0] Pragma:[no-cache] Set-Cookie:[sg-dummy=-; path=/; HttpOnly sg-auth-XXXX=4a49891d-2c46-4f50-a516-68a2e337f2a7; path=/; HttpOnly] X-Frame-Options:[SAMEORIGIN] X-Xss-Protection:[1; mode=block]]我想要这个元素:Set-Cookie:[sg-dummy=-; path=/; HttpOnly sg-auth-XXXX=4a49891d-2c46-4f50-a516-68a2e337f2a7; path=/; HttpOnly]但是,一旦我得到那部分,我就会看到一个经过编辑的 Set-Cookie 字符串:fmt.Println(resp.Header.Get("Set-Cookie")// I get this part only:// sg-dummy=-; path=/; HttpOnly我应该如何得到所有的东西?
2 回答

MMMHUHU
TA贡献1834条经验 获得超8个赞
似乎有多个 cookie。Header.Get如果标题有多个元素,则只会返回第一个元素。作为地图访问它:
for _,cookie:=range resp.Header["Set-Cookie"] {
// This should iterate twice
}

慕容708150
TA贡献1831条经验 获得超4个赞
标头可以具有与给定键关联的多个值。在您的示例中就是这种情况。
Header.Get仅返回与给定键关联的第一个值:
Get 获取与给定键关联的第一个值。如果没有与键关联的值,Get 返回“”。
相反,您需要使用Header.Values来返回所有这些:
Values 返回与给定键关联的所有值。
fmt.Println(resp.Header.Values("Set-Cookie"))
我建议阅读您使用的功能的文档。
- 2 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消