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() | 
