diff options
| -rw-r--r-- | debug_toolbar/panels/headers.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/debug_toolbar/panels/headers.py b/debug_toolbar/panels/headers.py index 0138299..265ec6b 100644 --- a/debug_toolbar/panels/headers.py +++ b/debug_toolbar/panels/headers.py @@ -39,7 +39,7 @@ class HeadersPanel(Panel): def process_request(self, request): wsgi_env = list(sorted(request.META.items())) self.request_headers = OrderedDict( - (unmangle(k), v) for (k, v) in wsgi_env if k.startswith('HTTP_')) + (unmangle(k), v) for (k, v) in wsgi_env if is_http_header(k)) if 'Cookie' in self.request_headers: self.request_headers['Cookie'] = '=> see Request panel' self.environ = OrderedDict( @@ -56,5 +56,11 @@ class HeadersPanel(Panel): }) +def is_http_header(wsgi_key): + # The WSGI spec says that keys should be str objects in the environ dict, + # but this isn't true in practice. See issues #449 and #482. + return isinstance(wsgi_key, str) and wsgi_key.startswith('HTTP_') + + def unmangle(wsgi_key): return wsgi_key[5:].replace('_', '-').title() |
