Files
bj_power/bj_power_wms_client/internal/proxy/proxy.go
T

29 lines
786 B
Go
Raw Normal View History

2026-08-27 19:50:57 +08:00
package proxy
import (
"fmt"
"net/http"
"net/http/httputil"
"net/url"
)
// New 创建指向 WMS 后端的反向代理。
// 请求侧保留 Method/Body/Header(含 Cookie、Authorization)
// 响应头默认全量透传(含滑动续签的 X-Renewed-Token,由 WMS 写入)。
func New(upstream string) *httputil.ReverseProxy {
target, err := url.Parse(upstream)
if err != nil {
panic(fmt.Sprintf("Upstream 配置非法: %v", err))
}
rp := httputil.NewSingleHostReverseProxy(target)
origDirector := rp.Director
rp.Director = func(req *http.Request) {
origDirector(req)
req.Host = target.Host
}
rp.ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error) {
http.Error(w, "WMS 服务不可达: "+err.Error(), http.StatusBadGateway)
}
return rp
}