fix(claude): preserve legacy user agent overrides

This commit is contained in:
tpob
2026-03-19 00:03:09 +08:00
parent 616d41c06a
commit dd64adbeeb
2 changed files with 40 additions and 4 deletions

View File

@@ -308,15 +308,19 @@ func applyClaudeLegacyDeviceHeaders(r *http.Request, ginHeaders http.Header, cfg
miscEnsure("X-Stainless-Os", mapStainlessOS())
miscEnsure("X-Stainless-Arch", mapStainlessArch())
// Legacy mode preserves per-auth custom header overrides. By the time we get
// here, ApplyCustomHeadersFromAttrs has already populated r.Header.
if strings.TrimSpace(r.Header.Get("User-Agent")) != "" {
return
}
clientUA := ""
if ginHeaders != nil {
clientUA = ginHeaders.Get("User-Agent")
clientUA = strings.TrimSpace(ginHeaders.Get("User-Agent"))
}
if isClaudeCodeClient(clientUA) {
r.Header.Set("User-Agent", clientUA)
return
}
if strings.TrimSpace(r.Header.Get("User-Agent")) == "" {
r.Header.Set("User-Agent", profile.UserAgent)
}
r.Header.Set("User-Agent", profile.UserAgent)
}