From d2f647cee45fd05cc1977cc3faf4b095b5047b29 Mon Sep 17 00:00:00 2001 From: Ian Cordasco Date: Fri, 14 Feb 2014 16:15:21 -0600 Subject: [PATCH] Do not set headers with None value - Regardless of whether they are on the session or not - Fixes #1920 --- requests/sessions.py | 2 ++ test_requests.py | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/requests/sessions.py b/requests/sessions.py index a023e4ec..c06fbcbe 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -59,6 +59,8 @@ def merge_setting(request_setting, session_setting, dict_class=OrderedDict): if v is None: del merged_setting[k] + merged_setting = dict((k, v) for (k, v) in merged_setting.items() if v is not None) + return merged_setting diff --git a/test_requests.py b/test_requests.py index 3d7cdaaf..998f17f3 100755 --- a/test_requests.py +++ b/test_requests.py @@ -211,6 +211,14 @@ class RequestsTestCase(unittest.TestCase): req_urls = [r.request.url for r in resp.history] assert urls == req_urls + def test_headers_on_session_with_None_are_not_sent(self): + """Do not send headers in Session.headers with None values.""" + ses = requests.Session() + ses.headers['Accept-Encoding'] = None + req = requests.Request('GET', 'http://httpbin.org/get') + prep = ses.prepare_request(req) + assert 'Accept-Encoding' not in prep.headers + def test_user_agent_transfers(self): heads = {