1 回答
TA贡献1839条经验 获得超15个赞
我最终通过编写一个自定义的 Echo 中间件来解决这个问题,以便在 Echo 的代理中间件将标头发送回客户端之前挂钩到响应。
func setResponseACAOHeaderFromRequest (req http.Request, resp echo.Response) {
resp.Header().Set(echo.HeaderAccessControlAllowOrigin,
req.Header.Get(echo.HeaderOrigin))
}
func ACAOHeaderOverwriteMiddleware(next echo.HandlerFunc) echo.HandlerFunc {
return func(ctx echo.Context) error {
ctx.Response().Before(func() {
setResponseACAOHeaderFromRequest(*ctx.Request(), *ctx.Response())
})
return next(ctx)
}
}
然后将此中间件放在e.Use() 代理中间件之前:
e.POST(
"/",
handlers.Noop,
ACAOHeaderOverwriteMiddleware,
middleware.ProxyWithConfig(middleware.ProxyConfig{
Balancer: singleTargetBalancer("[backend service URL]"),
})
)
Request::Before()Echo钩子的文档: https ://echo.labstack.com/guide/response#before-response
- 1 回答
- 0 关注
- 124 浏览
添加回答
举报