进阶 www.iris-go.com 2026-10-20 02:39:14 · 20 阅读
第28章 Iris 框架请求头处理指南
Request Headers 了解如何在 Iris 中处理 HTTP 请求头。
读取请求头 gopackage main
import "github.com/kataras/iris/v12"
func main() {
app := iris.New()
app.Get("/headers", func(ctx iris.Context) {
// 获取单个请求头
userAgent := ctx.GetHeader("User-Agent")
// 获取多个请求头
accept := ctx.GetHeader("Accept")
encoding := ctx.GetHeader("Accept-Encoding")
language := ctx.GetHeader("Accept-Language")
ctx.JSON(iris.Map{
"userAgent": userAgent,
"accept": accept,
"encoding": encoding,
"language": language,
})
})
app.Listen(":8080")
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
自定义请求头 goapp.Get("/custom", func(ctx iris.Context) { // 获取自定义请求头 apiKey := ctx.GetHeader("X-API-Key") if apiKey == "" { ctx.StopWithStatus(iris.StatusUnauthorized) return } ctx.JSON(iris.Map{ "authenticated": true, }) })1
2
3
4
5
6
7
8
9
10
11
12
检查请求头是否存在 goapp.Get("/check", func(ctx iris.Context) { hasAuth := ctx.GetHeader("Authorization") != "" hasContentType := ctx.GetHeader("Content-Type") != "" ctx.JSON(iris.Map{ "hasAuth": hasAuth, "hasContentType": hasContentType, }) })1
2
3
4
5
6
7
8
9
多个值 goapp.Get("/multiple", func(ctx iris.Context) { // 获取某个请求头的所有值 accepts := ctx.Request().Header["Accept"] ctx.JSON(iris.Map{ "accepts": accepts, }) })1
2
3
4
5
6
7
8
最佳实践 安全:验证请求头、检查必需请求头、处理缺失请求头、清理值、监控可疑请求头;性能:缓存请求头值、处理大请求头、监控请求头大小、优化解析、清理资源;实现:使用常量、处理大小写敏感性、记录要求、遵循标准、测试边界情况;维护:监控使用情况、更新验证逻辑、记录变更、定期测试、审查安全性
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
自定义请求头 goapp.Get("/custom", func(ctx iris.Context) { // 获取自定义请求头 apiKey := ctx.GetHeader("X-API-Key") if apiKey == "" { ctx.StopWithStatus(iris.StatusUnauthorized) return } ctx.JSON(iris.Map{ "authenticated": true, }) })1
2
3
4
5
6
7
8
9
10
11
12
检查请求头是否存在 goapp.Get("/check", func(ctx iris.Context) { hasAuth := ctx.GetHeader("Authorization") != "" hasContentType := ctx.GetHeader("Content-Type") != "" ctx.JSON(iris.Map{ "hasAuth": hasAuth, "hasContentType": hasContentType, }) })1
2
3
4
5
6
7
8
9
多个值 goapp.Get("/multiple", func(ctx iris.Context) { // 获取某个请求头的所有值 accepts := ctx.Request().Header["Accept"] ctx.JSON(iris.Map{ "accepts": accepts, }) })1
2
3
4
5
6
7
8
最佳实践 安全:验证请求头、检查必需请求头、处理缺失请求头、清理值、监控可疑请求头;性能:缓存请求头值、处理大请求头、监控请求头大小、优化解析、清理资源;实现:使用常量、处理大小写敏感性、记录要求、遵循标准、测试边界情况;维护:监控使用情况、更新验证逻辑、记录变更、定期测试、审查安全性