Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Allow hop-by-hop header Django

I'm writing a demo proxy server with Django 1.6 and Python 3.4. I get an error when the response has this header:

Transfer-Encoding=chunked

The error is:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/wsgiref/handlers.py", line 137, in run
    self.result = application(self.environ, self.start_response)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/contrib/staticfiles/handlers.py", line 67, in __call__
    return self.application(environ, start_response)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/handlers/wsgi.py", line 214, in __call__
    start_response(force_str(status), response_headers)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/wsgiref/handlers.py", line 236, in start_response
    assert not is_hop_by_hop(name),"Hop-by-hop headers not allowed"
AssertionError: Hop-by-hop headers not allowed

I find out this question: Allow hop-by-hop headers in Django proxy middleware but seem like Django 1.6 don't have basehttp._hop_headers.

I run server with python3.4 manage.py runserver.

Please help

like image 225
Tuan Chau Avatar asked Feb 12 '23 23:02

Tuan Chau


1 Answers

The following HTTP/1.1 headers are hop-by-hop headers that wsgiref does not allowed:

  - Connection
  - Keep-Alive
  - Proxy-Authenticate
  - Proxy-Authorization
  - TE
  - Trailers
  - Transfer-Encoding
  - Upgrade

See:

  1. Hypertext Transfer Protocol -- HTTP/1.1
  2. The code of wsgiref: util.py, handlers.py

like image 125
rossini Avatar answered Feb 14 '23 12:02

rossini