如何解决无法通过net / http调用获取整个标头元素
我想获得一个名为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
我应该如何获得全部东西?
解决方法
标头可以具有与给定键关联的多个值。在您的示例中就是这种情况。
Header.Get仅返回与给定键关联的第一个值:
Get获取与给定键关联的第一个值。如果没有与键关联的值,则Get返回“”。
相反,您需要使用Header.Values来返回所有参数:
值返回与给定键关联的所有值。
fmt.Println(resp.Header.Values("Set-Cookie"))
我建议您阅读使用功能的文档。
,似乎有多个Cookie。 Header.Get
仅在标头包含多个元素时才返回第一个元素。作为地图访问它:
for _,cookie:=range resp.Header["Set-Cookie"] {
// This should iterate twice
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。