无法获取请求标头

分享于2022年07月17日 go go-echo 问答
【问题标题】:无法获取请求标头(cannot get request header)
【发布时间】:2022-02-18 22:31:29
【问题描述】:

我尝试使用回显框架打印请求标头,但回显框架似乎没有将标头加载到 context.request.Header 字段中。这是 echo 框架的错误吗?

这里是main函数,context.Request()是*http.Request的一个类型,

func main() {
    server := echo.New()

    server.GET("/", func(context echo.Context) error {

        for key, values := range context.Request().Header {
            fmt.Println(key)
            for value := range values {
                fmt.Println(value)
            }
        }
        return nil
    })

    server.Logger.Fatal(server.Start(":12312"))
}

我用 curl curl -vvv "http://127.0.0.1:12312/" 测试服务器,但是服务器只打印

User-Agent
0
Accept
0

但实际上,curl 提供以下作为标题信息

> Host: 127.0.0.1:12312
> User-Agent: curl/7.64.1
> Accept: */*


【解决方案1】:
        for value := range values {

在列表中使用 range 会返回 index, value 。您只要求 index ,在所有情况下都是 0 。要获取实际值,请使用

        for _,value := range values {