From 037fb573f77e22aa67733ea3b755d515ebcc5904 Mon Sep 17 00:00:00 2001 From: user <70670632+stuxf@users.noreply.github.com> Date: Thu, 16 Apr 2026 04:38:29 +0000 Subject: [PATCH] fix: preserve caller headers across redirect hops in safe_get --- litellm/proxy/common_utils/url_utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/litellm/proxy/common_utils/url_utils.py b/litellm/proxy/common_utils/url_utils.py index 0583cc3a42b..2a160d3cec7 100644 --- a/litellm/proxy/common_utils/url_utils.py +++ b/litellm/proxy/common_utils/url_utils.py @@ -148,11 +148,12 @@ def safe_get(client: Any, url: str, **kwargs: Any) -> Any: The final httpx.Response. """ kwargs.pop("follow_redirects", None) + caller_headers = kwargs.pop("headers", {}) for _ in range(_MAX_REDIRECTS): validated_url, original_host = validate_url(url) response = client.get( validated_url, - headers={**kwargs.pop("headers", {}), "Host": original_host}, + headers={**caller_headers, "Host": original_host}, follow_redirects=False, **kwargs, ) @@ -165,11 +166,12 @@ def safe_get(client: Any, url: str, **kwargs: Any) -> Any: async def async_safe_get(client: Any, url: str, **kwargs: Any) -> Any: """Async version of safe_get.""" kwargs.pop("follow_redirects", None) + caller_headers = kwargs.pop("headers", {}) for _ in range(_MAX_REDIRECTS): validated_url, original_host = validate_url(url) response = await client.get( validated_url, - headers={**kwargs.pop("headers", {}), "Host": original_host}, + headers={**caller_headers, "Host": original_host}, follow_redirects=False, **kwargs, )