diff --git a/Makefile b/Makefile
index 0a010be..015e511 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,8 @@
 tests:
-	cd python2 && python2.4 httplib2test.py
+	-cd python2 && python2.4 httplib2test.py
 	-cd python2 && python2.5 httplib2test.py
-	cd python2 && python2.6 httplib2test.py
-	cd python3 && python3.1 httplib2test.py
+	-cd python2 && python2.6 httplib2test.py
+	-cd python3 && python3.1 httplib2test.py
 
 VERSION = $(shell python setup.py --version)
 DST = dist/httplib2-$(VERSION)
diff --git a/python2/httplib2/__init__.py b/python2/httplib2/__init__.py
index 81e9f93..00c6250 100644
--- a/python2/httplib2/__init__.py
+++ b/python2/httplib2/__init__.py
@@ -987,7 +987,9 @@
                         old_response = copy.deepcopy(response)
                         if not old_response.has_key('content-location'):
                             old_response['content-location'] = absolute_uri
-                        redirect_method = ((response.status == 303) and (method not in ["GET", "HEAD"])) and "GET" or method
+                        redirect_method = method
+                        if response.status == 303:
+                            redirect_method = "GET"
                         (response, content) = self.request(location, redirect_method, body=body, headers = headers, redirections = redirections - 1)
                         response.previous = old_response
                 else:
diff --git a/python2/httplib2test.py b/python2/httplib2test.py
index 3dcfe03..ed04799 100755
--- a/python2/httplib2test.py
+++ b/python2/httplib2test.py
@@ -26,6 +26,7 @@
 import unittest
 import urlparse
 
+
 # Python 2.3 support
 if not hasattr(unittest.TestCase, 'assertTrue'):
     unittest.TestCase.assertTrue = unittest.TestCase.failUnless
@@ -333,6 +334,14 @@
         self.assertEqual(response.previous.status, 301)
         self.assertEqual(response.previous.fromcache, True)
 
+    def testHead301(self):
+        # Test that we automatically follow 301 redirects
+        uri = urlparse.urljoin(base, "301/onestep.asis")
+        destination = urlparse.urljoin(base, "302/final-destination.txt")
+        (response, content) = self.http.request(uri, "HEAD")
+        self.assertEqual(response.status, 200)
+        self.assertEqual(response.previous.status, 301)
+        self.assertEqual(response.previous.fromcache, False)
 
     def testGet301NoRedirect(self):
         # Test that we automatically follow 301 redirects
diff --git a/python3/httplib2/__init__.py b/python3/httplib2/__init__.py
index 1f7096d..3907013 100644
--- a/python3/httplib2/__init__.py
+++ b/python3/httplib2/__init__.py
@@ -967,7 +967,9 @@
                         old_response = copy.deepcopy(response)
                         if 'content-location' not in old_response:
                             old_response['content-location'] = absolute_uri 
-                        redirect_method = ((response.status == 303) and (method not in ["GET", "HEAD"])) and "GET" or method
+                        redirect_method = method
+                        if response.status == 303:
+                          redirect_method = "GET"
                         (response, content) = self.request(location, redirect_method, body=body, headers = headers, redirections = redirections - 1)
                         response.previous = old_response
                 else:
diff --git a/python3/httplib2test.py b/python3/httplib2test.py
index ebaf416..5e7e930 100755
--- a/python3/httplib2test.py
+++ b/python3/httplib2test.py
@@ -330,6 +330,13 @@
         self.assertEqual(response.previous.status, 301)
         self.assertEqual(response.previous.fromcache, True)
 
+    def testHead301(self):
+        # Test that we automatically follow 301 redirects
+        uri = urllib.parse.urljoin(base, "301/onestep.asis")
+        (response, content) = self.http.request(uri, "HEAD")
+        self.assertEqual(response.status, 200)
+        self.assertEqual(response.previous.status, 301)
+        self.assertEqual(response.previous.fromcache, False)
 
     def testGet301NoRedirect(self):
         # Test that we automatically follow 301 redirects
