为了账号安全,请及时绑定邮箱和手机立即绑定

无法通过 net/http 调用获取整个标头元素

无法通过 net/http 调用获取整个标头元素

Go
皈依舞 2022-06-27 15:23:13
我想获得一个名为 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

}


查看完整回答
反对 回复 2022-06-27
?
慕容708150

TA贡献1831条经验 获得超4个赞

标头可以具有与给定键关联的多个值。在您的示例中就是这种情况。

Header.Get仅返回与给定键关联的第一个值:

Get 获取与给定键关联的第一个值。如果没有与键关联的值,Get 返回“”。

相反,您需要使用Header.Values来返回所有这些:

Values 返回与给定键关联的所有值。

fmt.Println(resp.Header.Values("Set-Cookie"))

我建议阅读您使用的功能的文档。


查看完整回答
反对 回复 2022-06-27
  • 2 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号