Merge pull request #3072 from collinanderson/23295

Fixed #23295 -- Removed unnecessary fix_location_header request.get_host() check
This commit is contained in:
Carl Meyer 2014-08-15 17:21:01 -06:00
commit 9fef66ef7c
2 changed files with 14 additions and 3 deletions

View File

@ -17,7 +17,7 @@ def fix_location_header(request, response):
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:
response['Location'] = request.build_absolute_uri(response['Location'])
return response

View File

@ -3,8 +3,8 @@ from __future__ import unicode_literals
import io
import gzip
from django.http import HttpRequest, HttpResponse, StreamingHttpResponse
from django.http.utils import conditional_content_removal
from django.http import HttpRequest, HttpResponse, HttpResponseRedirect, StreamingHttpResponse
from django.http.utils import conditional_content_removal, fix_location_header
from django.test import TestCase
@ -69,3 +69,14 @@ class HttpUtilTests(TestCase):
res = StreamingHttpResponse(['abc'])
conditional_content_removal(req, res)
self.assertEqual(b''.join(res), b'')
def test_fix_location_without_get_host(self):
"""
Tests that you can return an absolute redirect when the request
host is not in ALLOWED_HOSTS. Issue #20472
"""
request = HttpRequest()
def bomb():
self.assertTrue(False)
request.get_host = bomb
fix_location_header(request, HttpResponseRedirect('http://example.com'))