refactor: update HTTP handlers to respect disable_default_user_agent

Modify http_handler.py and httpx_handler.py to check the
disable_default_user_agent flag and return empty headers when disabled.
This allows users to override the User-Agent header completely.
This commit is contained in:
jayy-77 2026-01-28 00:50:02 +05:30
parent fe184936ff
commit a14703eb17
2 changed files with 50 additions and 8 deletions

View file

@ -50,9 +50,27 @@ try:
except Exception:
version = "0.0.0"
headers = {
"User-Agent": f"litellm/{version}",
}
def get_default_headers() -> dict:
"""
Get default headers for HTTP requests.
Respects litellm.disable_default_user_agent flag to allow users to disable
the automatic User-Agent header injection or override it completely.
Returns:
dict: Default headers (may be empty if user disabled defaults)
"""
import litellm
if getattr(litellm, "disable_default_user_agent", False):
return {}
return {
"User-Agent": f"litellm/{version}",
}
# Initialize headers - will be empty if disable_default_user_agent is True
headers = get_default_headers()
# https://www.python-httpx.org/advanced/timeouts
_DEFAULT_TIMEOUT = httpx.Timeout(timeout=5.0, connect=5.0)
@ -371,13 +389,16 @@ class AsyncHTTPHandler:
shared_session=shared_session,
)
# Get default headers - will be empty if disable_default_user_agent is True
default_headers = get_default_headers()
return httpx.AsyncClient(
transport=transport,
event_hooks=event_hooks,
timeout=timeout,
verify=ssl_config,
cert=cert,
headers=headers,
headers=default_headers,
follow_redirects=True,
)
@ -899,6 +920,9 @@ class HTTPHandler:
# /path/to/client.pem
cert = os.getenv("SSL_CERTIFICATE", litellm.ssl_certificate)
# Get default headers - will be empty if disable_default_user_agent is True
default_headers = get_default_headers() if not disable_default_headers else None
if client is None:
transport = self._create_sync_transport()
@ -908,7 +932,7 @@ class HTTPHandler:
timeout=timeout,
verify=ssl_config,
cert=cert,
headers=headers if not disable_default_headers else None,
headers=default_headers,
follow_redirects=True,
)
else:

View file

@ -7,9 +7,27 @@ try:
except Exception:
version = "0.0.0"
headers = {
"User-Agent": f"litellm/{version}",
}
def get_default_headers() -> dict:
"""
Get default headers for HTTP requests.
Respects litellm.disable_default_user_agent flag to allow users to disable
the automatic User-Agent header injection or override it completely.
Returns:
dict: Default headers (may be empty if user disabled defaults)
"""
import litellm
if getattr(litellm, "disable_default_user_agent", False):
return {}
return {
"User-Agent": f"litellm/{version}",
}
# Initialize headers - will be empty if disable_default_user_agent is True
headers = get_default_headers()
class HTTPHandler: