Skip to content

Commit cb92905

Browse files
committed
Allow DEFAULT_RESPONSE_HEADERS to be a callable with request arg
1 parent 75071dc commit cb92905

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

plain/plain/internal/middleware/headers.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,15 @@ class DefaultHeadersMiddleware(HttpMiddleware):
1313
def process_request(self, request: Request) -> Response:
1414
response = self.get_response(request)
1515

16-
for header, value in settings.DEFAULT_RESPONSE_HEADERS.items():
17-
# Since we don't have a good way to *remote* default response headers,
16+
# Support callable DEFAULT_RESPONSE_HEADERS for dynamic header generation
17+
# (e.g., CSP nonces that change per request)
18+
if callable(settings.DEFAULT_RESPONSE_HEADERS):
19+
default_headers = settings.DEFAULT_RESPONSE_HEADERS(request)
20+
else:
21+
default_headers = settings.DEFAULT_RESPONSE_HEADERS
22+
23+
for header, value in default_headers.items():
24+
# Since we don't have a good way to *remove* default response headers,
1825
# use allow users to set them to an empty string to indicate they should be removed.
1926
if header in response.headers and response.headers[header] == "":
2027
del response.headers[header]

0 commit comments

Comments
 (0)