Fixed #23295 -- Removed unnecessary fix_location_header request.get_host() check.

This commit is contained in:
Collin Anderson 2014-08-15 12:40:46 -04:00
parent 7ca665c5f5
commit 230393e5e8
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'))