1

我正在构建 2 个 API。一个向另一个提出请求。

要调用接收请求的api,我们需要传递一个X-Token Header。我正在用 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-tokenacceptcontent-type标头在哪里......

重要的

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

1 回答 1

1

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

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

https://localhost:8086/v2/example

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

那是我的问题....

我只是复制并过去了 golang 生成的邮递员代码......这是“最大”的区别......

谢谢先生。邮差...

于 2016-10-11T11:17:37.240 回答