登录
首页 >  Golang >  Go问答

请求头不可获取

来源:stackoverflow

时间:2024-03-18 16:12:29 488浏览 收藏

在使用 Echo 框架构建 HTTP 服务器时,开发者可能无法从请求上下文中获取 HTTP 请求头。这是因为 Echo 框架不会将请求头加载到 context.request.header 字段中。为了解决这个问题,开发者需要使用正确的遍历方式来获取请求头。具体来说,应使用 for _, value := range values 的语法,而不是 for value := range values,以获取实际的请求头值。

问题内容

我尝试使用 echo 框架打印请求标头,但 echo 框架似乎没有将标头加载到 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: */*

解决方案


for value := range values {

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

for _,value := range values {

由于我无法编辑@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"))
}

终于介绍完啦!小伙伴们,这篇关于《请求头不可获取》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>