Skip to content

Middleware 中间件模块

Go Web 应用的 HTTP 中间件集合。

包含内容

  • Recovery — panic 恢复 + 日志
  • CORS — 跨域资源共享
  • Logging — 请求/响应日志
  • Timeout — 请求超时
  • Request ID — 唯一请求标识
  • Body Limit — 请求体大小限制
  • Proxy — 可信代理处理
  • Debug — 调试模式检测

快速复制

bash
cp -r registry/middleware/src/go/* yourproject/internal/middleware/

使用方式

链式中间件

go
handler := middleware.Chain(
    middleware.Recovery(),
    middleware.CORS(middleware.CORSConfig{
        AllowOrigins: []string{"https://example.com"},
        AllowMethods: []string{"GET", "POST", "PUT", "DELETE"},
    }),
    middleware.Logging(),
    middleware.Timeout(30 * time.Second),
    middleware.BodyLimit(10 << 20), // 10 MB
)(yourHandler)

单独使用

go
// Recovery
http.Handle("/api", middleware.Recovery()(handler))

// CORS
http.Handle("/api", middleware.CORS(config)(handler))

// Logging
http.Handle("/api", middleware.Logging()(handler))

配置

CORS

go
config := middleware.CORSConfig{
    AllowOrigins: []string{"https://example.com"},
    AllowMethods: []string{"GET", "POST"},
    AllowHeaders: []string{"Content-Type", "Authorization"},
    MaxAge: 86400,
}

超时

go
handler := middleware.Timeout(30 * time.Second)(handler)

文件参考

文件用途
recovery.goPanic 恢复中间件
cors.goCORS 中间件
logging.go请求日志
timeout.go请求超时
requestid.go请求 ID 生成
bodylimit.go请求体大小限制
chain.go中间件链
config.go配置

安全特性

  • 头部 CRLF 注入防护
  • 可信代理验证
  • 请求体大小限制防止大载荷攻击

测试

bash
cd registry/middleware/src/go
go test -v ./...

Released under the MIT License.