【问题标题】: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: */*

【问题讨论】:

    标签: go go-echo


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

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

            for _,value := range values {
    

    【讨论】:

      【解决方案2】:

      由于我无法编辑 @Steffen 以显示完整代码,我将在此处添加:

      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"))
      }
      

      【讨论】:

        猜你喜欢
        • 2021-02-02
        • 2022-11-30
        • 2015-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-10
        • 2016-11-25
        相关资源
        最近更新 更多