Golang错误的http resquest标头

时间:2016-10-11 03:27:13

标签: go http-headers go-gin

我正在建造2个apis。一个向另一个提出请求。

要调用接收请求的api,我们需要传递一个X-Token标头。我正在使用Golang

这样做
client := &http.Client{
    Transport: &http.Transport{
        TLSClientConfig: &tls.Config{
            InsecureSkipVerify: true,
        },
    },
}

req, err := http.NewRequest("GET", "https://localhost:8086/v2/example", nil)
if err != nil {
    c.JSON(http.StatusInternalServerError, gin.H{"Error": err.Error()})
}
req.Header.Add("accept", "application/json")
req.Header.Add("content-type", "application/json")
req.Header.Add("x-token", "a2e63ee01401aaeca78be023dfbb8c59")

resp, err := client.Do(req)

在另一个API中,我得到了gin的http标头,如下所示:

token := c.Request.Header.Get("x-token")

我不知道为什么我的标头带有另一个值而没有X-Token。谢谢!

fmt.Printf("%+v", c.Request.Header)的结果:

map[User-Agent:[Go-http-client/1.1] Referer:[https://localhost:8086/v2/example] Accept-Encoding:[gzip]]

我不知道我的 x-token 接受内容类型标题在哪里....

重要

  • 如果我使用Postman上的 x-token 标头向请求的API发出请求,我会得到正确的标题。
  • 如果我更改了发出请求的API上的请求地址,例如httpbin,我也会得到正确的标题....

1 个答案:

答案 0 :(得分:1)

赫洛,伙计们!我找到了解决方案......

我不知道为什么......但我认为golang不会处理没有尾随斜杠 url ....

https://localhost:8086/v2/example
是不同的 https://localhost:8086/v2/example/

这是我的问题......

我只是复制并通过golang生成的邮递员代码......这就是“最大的”差异......

谢谢先生。邮差...