我想獲得一個名為 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 關注
- 100 瀏覽
添加回答
舉報
0/150
提交
取消