Commit 9fef66ef authored by Carl Meyer's avatar Carl Meyer
Browse files

Merge pull request #3072 from collinanderson/23295

Fixed #23295 -- Removed unnecessary fix_location_header request.get_host() check
parents 90b64db3 230393e5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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

+13 −2
Original line number Diff line number Diff line
@@ -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'))