fix(gateway): 修复代理响应头传递和JSON写入问题
- 添加 ModifyResponse 函数以正确传递原始响应头 - 实现响应头从代理服务器到客户端的完整传递 - 修复 WebSocket 升级处理中的响应写入逻辑 - 确保 JSON 数据通过 RawWriter 正确写入响应main v1.0.1016
parent
f958579981
commit
45262d8f88
|
|
@ -59,8 +59,15 @@ func BuildRequest(r *ghttp.Request, host string) {
|
||||||
w.WriteHeader(http.StatusBadGateway)
|
w.WriteHeader(http.StatusBadGateway)
|
||||||
w.Write([]byte("Bad Gateway"))
|
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 方法
|
// ServeHTTP 会自动处理 WebSocket 升级和所有 HTTP 方法
|
||||||
// 使用 RawWriter() 获取原始的 http.ResponseWriter,避免 gf 框架的封装影响
|
// 使用 RawWriter() 获取原始的 http.ResponseWriter,避免 gf 框架的封装影响
|
||||||
proxy.ServeHTTP(r.Response.RawWriter(), r.Request)
|
proxy.ServeHTTP(r.Response.RawWriter(), r.Request)
|
||||||
|
r.Response.WriteJson(r.Response.RawWriter())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue