From bad3ea26773521f6215408d5df8095c897b51eac Mon Sep 17 00:00:00 2001 From: disqualifier Date: Sun, 28 Jun 2026 18:45:25 -0400 Subject: [PATCH] fix: merge session-default headers into request() so the header API works MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit request() built outgoing headers from per-request kwargs only and never read self._default_headers, so update_headers()/clear_headers() mutated a field that never reached the wire — while preview() DID read it, so preview diverged from the real send. request() now merges _default_headers (defaults -> per-request -> overwrites), making the session-default header API functional and preview consistent with request. Signed-off-by: disqualifier --- src/aioweb/session.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/aioweb/session.py b/src/aioweb/session.py index 5ed4b37..a0dc4b3 100644 --- a/src/aioweb/session.py +++ b/src/aioweb/session.py @@ -291,7 +291,8 @@ class ExtendedSession: kwargs["proxy"] = self._get_proxy(url, kwargs.pop("proxies", None)) debug = kwargs.pop("debug", False) - kwargs["headers"] = self._apply_overwrites(kwargs.get("headers")) + merged = {**self._default_headers, **(kwargs.get("headers") or {})} + kwargs["headers"] = self._apply_overwrites(merged) kwargs["headers"] = {str(k): str(v) for k, v in kwargs["headers"].items()} timeout = kwargs.get("timeout")