Remove Content-Length from GET/HEAD by default.
authorJohnny Goodnow <j.goodnow29@gmail.com>
Sat, 26 Jan 2013 04:50:58 +0000 (20:50 -0800)
committerJohnny Goodnow <j.goodnow29@gmail.com>
Sat, 26 Jan 2013 04:50:58 +0000 (20:50 -0800)
Now, Content-Length is only auto-added for non-GET/HEAD requests.

requests/models.py
test_requests.py

index 691f049..4235141 100644 (file)
@@ -392,7 +392,7 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin):
             body.seek(0, 0)
         elif body is not None:
             self.headers['Content-Length'] = str(len(body))
-        elif self.method in ('POST', 'PUT', 'PATCH'):
+        elif self.method not in ('GET', 'HEAD'):
             self.headers['Content-Length'] = '0'
 
     def prepare_auth(self, auth):
index 99e245f..312c955 100644 (file)
@@ -59,8 +59,10 @@ class RequestsTestCase(unittest.TestCase):
 
 
     def test_no_content_length(self):
-        req = requests.Request('GET', httpbin('get')).prepare()
-        self.assertTrue('Content-Length' not in req.headers)
+        get_req = requests.Request('GET', httpbin('get')).prepare()
+        self.assertTrue('Content-Length' not in get_req.headers)
+        head_req = requests.Request('HEAD', httpbin('head')).prepare()
+        self.assertTrue('Content-Length' not in head_req.headers)
 
 
     def test_path_is_not_double_encoded(self):