fix(gateway): 修复代理响应头传递和JSON写入问题

- 添加 ModifyResponse 函数以正确传递原始响应头
- 实现响应头从代理服务器到客户端的完整传递
- 修复 WebSocket 升级处理中的响应写入逻辑
- 确保 JSON 数据通过 RawWriter 正确写入响应
main v1.0.1016
black1552 2026-03-06 13:54:20 +08:00
parent f958579981
commit 45262d8f88
1 changed files with 8 additions and 1 deletions

View File

@ -59,8 +59,15 @@ func BuildRequest(r *ghttp.Request, host string) {
w.WriteHeader(http.StatusBadGateway)
w.Write([]byte("Bad Gateway"))
}
proxy.ModifyResponse = func(resp *http.Response) error {
// 获取原始响应的 Header
for k, v := range resp.Header {
r.Response.Header().Set(k, v[0])
}
return nil
}
// ServeHTTP 会自动处理 WebSocket 升级和所有 HTTP 方法
// 使用 RawWriter() 获取原始的 http.ResponseWriter避免 gf 框架的封装影响
proxy.ServeHTTP(r.Response.RawWriter(), r.Request)
r.Response.WriteJson(r.Response.RawWriter())
}