Decode headers as UTF-8 also in ASGI (#2606)
Co-authored-by: Adam Hopkins <adam@amhopkins.com>
This commit is contained in:
@@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Optional
|
||||
from urllib.parse import quote
|
||||
|
||||
from sanic.compat import Header
|
||||
from sanic.exceptions import ServerError
|
||||
from sanic.exceptions import BadRequest, ServerError
|
||||
from sanic.helpers import Default
|
||||
from sanic.http import Stage
|
||||
from sanic.log import error_logger, logger
|
||||
@@ -132,12 +132,20 @@ class ASGIApp:
|
||||
instance.sanic_app.state.is_started = True
|
||||
setattr(instance.transport, "add_task", sanic_app.loop.create_task)
|
||||
|
||||
headers = Header(
|
||||
[
|
||||
(key.decode("latin-1"), value.decode("latin-1"))
|
||||
for key, value in scope.get("headers", [])
|
||||
]
|
||||
)
|
||||
try:
|
||||
headers = Header(
|
||||
[
|
||||
(
|
||||
key.decode("ASCII"),
|
||||
value.decode(errors="surrogateescape"),
|
||||
)
|
||||
for key, value in scope.get("headers", [])
|
||||
]
|
||||
)
|
||||
except UnicodeDecodeError:
|
||||
raise BadRequest(
|
||||
"Header names can only contain US-ASCII characters"
|
||||
)
|
||||
path = (
|
||||
scope["path"][1:]
|
||||
if scope["path"].startswith("/")
|
||||
|
||||
Reference in New Issue
Block a user