无法通过 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

我应该如何得到所有的东西?


皈依舞
浏览 120回答 2
2回答

MMMHUHU

似乎有多个 cookie。Header.Get如果标题有多个元素,则只会返回第一个元素。作为地图访问它:for _,cookie:=range resp.Header["Set-Cookie"] {   // This should iterate twice}

慕容708150

标头可以具有与给定键关联的多个值。在您的示例中就是这种情况。Header.Get仅返回与给定键关联的第一个值:Get 获取与给定键关联的第一个值。如果没有与键关联的值,Get 返回“”。相反,您需要使用Header.Values来返回所有这些:Values 返回与给定键关联的所有值。fmt.Println(resp.Header.Values("Set-Cookie"))我建议阅读您使用的功能的文档。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go