Skip to content

Commit 6f4f729

Browse files
committed
Support non-str keys in request.META.
Fix #482.
1 parent 837efab commit 6f4f729

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

debug_toolbar/panels/headers.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class HeadersPanel(Panel):
3939
def process_request(self, request):
4040
wsgi_env = list(sorted(request.META.items()))
4141
self.request_headers = OrderedDict(
42-
(unmangle(k), v) for (k, v) in wsgi_env if k.startswith('HTTP_'))
42+
(unmangle(k), v) for (k, v) in wsgi_env if is_http_header(k))
4343
if 'Cookie' in self.request_headers:
4444
self.request_headers['Cookie'] = '=> see Request panel'
4545
self.environ = OrderedDict(
@@ -56,5 +56,11 @@ def process_response(self, request, response):
5656
})
5757

5858

59+
def is_http_header(wsgi_key):
60+
# The WSGI spec says that keys should be str objects in the environ dict,
61+
# but this isn't true in practice. See issues #449 and #482.
62+
return isinstance(wsgi_key, str) and wsgi_key.startswith('HTTP_')
63+
64+
5965
def unmangle(wsgi_key):
6066
return wsgi_key[5:].replace('_', '-').title()

0 commit comments

Comments
 (0)