middleware gin-contrib/cors 在 301 时失效

背景:
gin 配置了路由 router.GET("/api/users") , 添加了 cors 中间件,
但是访问 /api/users/ 时, 会返回 301 + cros 错误

原因:
gin 默认打开 "RedirectTrailingSlash", 表示自动添加(或删除) "/" 并作 301 跳转, 这时候还未进入 middleware, 所以 cors 中间件所添加的 header 不会出现在返回头中.

中间件其它现象:

c.Header("before-next": "can-be-show")     // 会写入到返回头
c.next()
c.Header("after-next": "won't be returned")  // 不会出现在返回头中

解决办法:

  1. 在 gin 路由中同时添加 带 / 和不带 / 的路由, 工作量大, 且 ugly ❌
  2. 使用 nginx 在 go-web 程序外部直接全部带上 cors 头 ✅
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容