summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--django/middleware/common.py4
-rw-r--r--tests/middleware/tests.py13
3 files changed, 17 insertions, 1 deletions
diff --git a/AUTHORS b/AUTHORS
index c058559787..044391e4a3 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -908,6 +908,7 @@ answer newbie questions, and generally made Django that much better:
Roel Delos Reyes <https://roelzkie.dev>
Rohith P R <https://rohithpr.com>
Romain Garrigues <romain.garrigues.cs@gmail.com>
+ Ronan LE HAY <ronan@le-hay.fr>
Ronnie van den Crommenacker
Ronny Haryanto <https://ronny.haryan.to/>
Ross Poulton <ross@rossp.org>
diff --git a/django/middleware/common.py b/django/middleware/common.py
index bf22d00f01..870d462e6d 100644
--- a/django/middleware/common.py
+++ b/django/middleware/common.py
@@ -105,7 +105,9 @@ class CommonMiddleware(MiddlewareMixin):
# If the given URL is "Not Found", then check if we should redirect to
# a path with a slash appended.
if response.status_code == 404 and self.should_redirect_with_slash(request):
- return self.response_redirect_class(self.get_full_path_with_slash(request))
+ response = self.response_redirect_class(
+ self.get_full_path_with_slash(request)
+ )
# Add the Content-Length header to non-streaming responses if not
# already set.
diff --git a/tests/middleware/tests.py b/tests/middleware/tests.py
index 2e796ecfc7..c4aac0552b 100644
--- a/tests/middleware/tests.py
+++ b/tests/middleware/tests.py
@@ -350,6 +350,19 @@ class CommonMiddlewareTest(SimpleTestCase):
response = CommonMiddleware(get_response)(self.rf.get("/"))
self.assertEqual(int(response.headers["Content-Length"]), bad_content_length)
+ @override_settings(APPEND_SLASH=True)
+ def test_content_length_header_added_to_append_slash_redirect(self):
+ """
+ The Content-Length header is set when redirecting with the APPEND_SLASH
+ setting.
+ """
+ request = self.rf.get("/customurlconf/slash")
+ request.urlconf = "middleware.extra_urls"
+ r = CommonMiddleware(get_response_404)(request)
+ self.assertEqual(r.status_code, 301)
+ self.assertEqual(r.url, "/customurlconf/slash/")
+ self.assertTrue(r.has_header("Content-Length"))
+
# Other tests
@override_settings(DISALLOWED_USER_AGENTS=[re.compile(r"foo")])