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

Golang:为什么 response.Get("headerkey") 在这段代码中没有返回值?

Golang:为什么 response.Get("headerkey") 在这段代码中没有返回值?

Go
尚方宝剑之说 2021-11-08 10:32:26
这在过去几个小时一直困扰着我,我正在尝试获取响应标头值。简单的东西。如果我curl向这个正在运行的服务器发出请求,我会看到标头设置,带有 curl 的-v标志,但是当我尝试使用 Go's 检索标头时response.Header.Get(),它显示一个空白字符串"",标头的长度为 0。更让我沮丧的是,当我打印出正文时,标题值实际上是在响应中设置的(如下所示)。感谢您对此的任何帮助,提前致谢。我在这里有这个代码:http : //play.golang.org/p/JaYTfVoDsq其中包含以下内容:package mainimport (    "fmt"    "io/ioutil"    "net/http"    "net/http/httptest")func main() {    mux := http.NewServeMux()    server := httptest.NewServer(mux)    defer server.Close()    mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {        r.Header.Set("Authorization", "responseAuthVal")        fmt.Fprintln(w, r.Header)    })    req, _ := http.NewRequest("GET", server.URL, nil)    res, _:= http.DefaultClient.Do(req)    headerVal := res.Header.Get("Authorization")    fmt.Printf("auth header=%s, with length=%d\n", headerVal, len(headerVal))    content, _ := ioutil.ReadAll(res.Body)    fmt.Printf("res.Body=%s", content)    res.Body.Close()}此运行代码的输出是:auth header=, with length=0res.Body=map[Authorization:[responseAuthVal] User-Agent:[Go-http-client/1.1] Accept-Encoding:[gzip]]
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

这一行:

        r.Header.Set("Authorization", "responseAuthVal")

设置 的值r *http.Request,即传入请求,而您想设置 的值w http.ResponseWriter,即您将收到的响应。

所说的行应该是

        w.Header().Set("Authorization", "responseAuthVal")

看到这个游乐场。


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信