1
0
mirror of https://github.com/django/django.git synced 2025-06-20 19:09:13 +00:00

Fixed #36467 -- Removed leading whitespaces from Set-Cookie header values in WSGIHandler.

This also aligned the Set-Cookie logic in the WSGIHandler and ASGIHandler.

Co-authored-by: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com>
This commit is contained in:
Lukas Komischke 2025-06-18 09:02:01 +02:00 committed by Sarah Boyce
parent 1cd91d5d4b
commit db4d65f8be
4 changed files with 22 additions and 4 deletions

View File

@ -320,9 +320,7 @@ class ASGIHandler(base.BaseHandler):
value = value.encode("latin1")
response_headers.append((bytes(header), bytes(value)))
for c in response.cookies.values():
response_headers.append(
(b"Set-Cookie", c.output(header="").encode("ascii").strip())
)
response_headers.append((b"Set-Cookie", c.OutputString().encode("ascii")))
# Initial response message.
await send(
{

View File

@ -128,7 +128,7 @@ class WSGIHandler(base.BaseHandler):
status = "%d %s" % (response.status_code, response.reason_phrase)
response_headers = [
*response.items(),
*(("Set-Cookie", c.output(header="")) for c in response.cookies.values()),
*(("Set-Cookie", c.OutputString()) for c in response.cookies.values()),
]
start_response(status, response_headers)
if getattr(response, "file_to_stream", None) is not None and environ.get(

View File

@ -49,6 +49,19 @@ class WSGITest(SimpleTestCase):
],
)
def test_wsgi_cookies(self):
response_data = {}
def start_response(status, headers):
response_data["headers"] = headers
application = get_wsgi_application()
environ = self.request_factory._base_environ(
PATH_INFO="/cookie/", REQUEST_METHOD="GET"
)
application(environ, start_response)
self.assertIn(("Set-Cookie", "key=value; Path=/"), response_data["headers"])
def test_file_wrapper(self):
"""
FileResponse uses wsgi.file_wrapper.

View File

@ -6,7 +6,14 @@ def helloworld(request):
return HttpResponse("Hello World!")
def cookie(request):
response = HttpResponse("Hello World!")
response.set_cookie("key", "value")
return response
urlpatterns = [
path("", helloworld),
path("cookie/", cookie),
path("file/", lambda x: FileResponse(open(__file__, "rb"))),
]