You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Echo框架使用Bind绑定时读取不到Header中的Authorization值?

问题原因
  • Echo v4 原生的c.Bind()方法默认仅绑定路径参数、查询参数、表单数据、请求体数据,不会自动绑定请求头字段,请求头属于独立的绑定数据源,需要调用专属绑定方法。
  • 代码中使用的header:"Authorization"标签本身是合法的,但默认Bind()方法不会读取该标签匹配请求头。
解决方案

直接将原代码中的c.Bind(a)替换为Echo提供的Header专属绑定方法c.BindHeader(a)即可,修改后的核心代码如下:

func TokenCheck(next echo.HandlerFunc) echo.HandlerFunc {
    return func(c echo.Context) error {
        a := new(_getData)
        // 替换为BindHeader绑定请求头
        if err := c.BindHeader(a); err != nil {
            // 按需添加错误处理逻辑
            return err
        }
        fmt.Print(a)
        return next(c)
    }
}

如果需要让默认c.Bind()同时支持Header绑定,可以自定义Echo的Binder实现,不过对于仅需要绑定请求头的场景,直接调用BindHeader是最简方案。同类绑定失败场景可额外检查结构体目标字段是否为导出字段(首字母大写)。

内容的提问来源于stack exchange,提问作者Choi yun seok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:45:03