diff options
| author | Aymeric Augustin | 2013-11-25 09:48:47 +0100 | 
|---|---|---|
| committer | Aymeric Augustin | 2013-11-25 09:48:47 +0100 | 
| commit | 6f4f72988bddf1ff73b89dd6abc55602671d1d55 (patch) | |
| tree | f45ebaa2bcdd3c3c32cd6d26bd8c04e8fbf8cc7f | |
| parent | 837efabd5457e5bbce04780785e172da21a6c3db (diff) | |
| download | django-debug-toolbar-6f4f72988bddf1ff73b89dd6abc55602671d1d55.tar.bz2 | |
Support non-str keys in request.META.
Fix #482.
| -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() | 
