mirror of
https://mirror.skon.top/github.com/router-for-me/CLIProxyAPI
synced 2026-05-01 08:39:45 +08:00
fix(util): forward custom Host header to upstream
Custom headers configured under openai-compatibility (and any other provider passing through applyCustomHeaders) were silently dropped for the Host key, because Go's net/http reads the wire Host from req.Host, not req.Header["Host"]. As a result, virtual-host routed upstreams (e.g. LiteLLM behind an ingress) saw the base-url's host instead of the user-configured override and returned 404. Detect the Host key with http.CanonicalHeaderKey and assign it to req.Host so it is actually written on the wire. Other headers continue to use Header.Set as before. Fixes #2833
This commit is contained in:
@@ -47,6 +47,14 @@ func applyCustomHeaders(r *http.Request, headers map[string]string) {
|
||||
if k == "" || v == "" {
|
||||
continue
|
||||
}
|
||||
// Host is read from req.Host (not req.Header) by net/http when
|
||||
// writing the request; setting it via Header.Set is silently
|
||||
// dropped on the wire. Handle it explicitly so user-configured
|
||||
// virtual-host overrides actually take effect upstream.
|
||||
if http.CanonicalHeaderKey(k) == "Host" {
|
||||
r.Host = v
|
||||
continue
|
||||
}
|
||||
r.Header.Set(k, v)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user