Index: django/http/__init__.py
===================================================================
--- django/http/__init__.py	(revision 17060)
+++ django/http/__init__.py	(working copy)
@@ -535,7 +535,7 @@
     status_code = 200
 
     def __init__(self, content='', mimetype=None, status=None,
-            content_type=None):
+            content_type=None, add_host_to_location=True):
         # _headers is a mapping of the lower-case name to the original case of
         # the header (required for working with legacy systems) and the header
         # value.  Both the name of the header and its value are ASCII strings.
@@ -552,6 +552,7 @@
             self.status_code = status
 
         self['Content-Type'] = content_type
+        self.add_host_to_location = add_host_to_location
 
     def __str__(self):
         """Full HTTP message, including headers."""
Index: django/http/utils.py
===================================================================
--- django/http/utils.py	(revision 17060)
+++ django/http/utils.py	(working copy)
@@ -16,7 +16,8 @@
     Code constructing response objects is free to insert relative paths, as
     this function converts them to absolute paths.
     """
-    if 'Location' in response and request.get_host():
+    if 'Location' in response and response.add_host_to_location \
+       and request.get_host():
         response['Location'] = request.build_absolute_uri(response['Location'])
     return response
 
Index: docs/ref/request-response.txt
===================================================================
--- docs/ref/request-response.txt	(revision 17060)
+++ docs/ref/request-response.txt	(working copy)
@@ -597,7 +597,7 @@
 Methods
 -------
 
-.. method:: HttpResponse.__init__(content='', mimetype=None, status=200, content_type=DEFAULT_CONTENT_TYPE)
+.. method:: HttpResponse.__init__(content='', mimetype=None, status=200, content_type=DEFAULT_CONTENT_TYPE, add_host_to_location=True)
 
     Instantiates an ``HttpResponse`` object with the given page content (a
     string) and MIME type. The :setting:`DEFAULT_CONTENT_TYPE` is
@@ -619,6 +619,12 @@
     Otherwise, ``content_type`` is used. If neither is given, the
     :setting:`DEFAULT_CONTENT_TYPE` setting is used.
 
+    .. versionadded:: 1.4
+
+    ``add_host_to_location`` by default django ensures that all location
+    headers contain an absolute URI using request.build_absolute_uri if you
+    need to disable this behavior set ``add_host_to_location`` to False.
+
 .. method:: HttpResponse.__setitem__(header, value)
 
     Sets the given header name to the given value. Both ``header`` and
Index: tests/regressiontests/requests/tests.py
===================================================================
--- tests/regressiontests/requests/tests.py	(revision 17066)
+++ tests/regressiontests/requests/tests.py	(working copy)
@@ -6,12 +6,32 @@
 from django.core.handlers.modpython import ModPythonRequest
 from django.core.handlers.wsgi import WSGIRequest, LimitedStream
 from django.http import HttpRequest, HttpResponse, parse_cookie, build_request_repr
+from django.http.utils import fix_location_header
 from django.utils import unittest
 from django.utils.http import cookie_date
 
+class FixHeaderTests(unittest.TestCase):
+    def test_httprequest_add_host(self):
+        request = HttpRequest()
+        request.META = {
+                u'HTTP_HOST': u'example.com',
+            }
+        response = HttpResponse()
+        response['Location'] = '/test'
+        response = fix_location_header(request, response)
+        self.assertEqual(response['Location'], 'http://example.com/test')
 
+    def test_httprequest_no_host(self):
+        request = HttpRequest()
+        response = HttpResponse(add_host_to_location=False)
+        response['Location'] = '/test'
+        response = fix_location_header(request, response)
+        self.assertEqual(response['Location'], '/test')
+
 class RequestsTests(unittest.TestCase):
     def test_httprequest(self):
         request = HttpRequest()
         self.assertEqual(request.GET.keys(), [])
         self.assertEqual(request.POST.keys(), [])
