Mercurial > public > mercurial-scm > hg
comparison mercurial/hgweb/request.py @ 37049:55e901396005
hgweb: also set Content-Type header
Our HTTP/WSGI server may convert the Content-Type HTTP request
header to the CONTENT_TYPE WSGI environment key and not set
HTTP_CONTENT_TYPE. Other WSGI server implementations
do this, so I think the behavior is acceptable.
So assuming this HTTP request header could get "lost" by the WSGI
server, let's restore it on the request object like we do for
Content-Length.
FWIW, the WSGI server may also *invent* a Content-Type value. The
default behavior of Python's RFC 822 message class returns a default
media type if Content-Type isn't defined. This is kind of annoying.
But RFC 7231 section 3.1.1.5 does say the recipient may assume a media
type of application/octet-stream. Python's defaults are for
text/plain (given we're using an RFC 822 parser). But whatever.
Differential Revision: https://phab.mercurial-scm.org/D2849
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 13 Mar 2018 14:15:10 -0700 |
parents | 44467a4d472f |
children | e320d9405bba |
comparison
equal
deleted
inserted
replaced
37048:fc5e261915b9 | 37049:55e901396005 |
---|---|
296 # this, since a consumer will either either value to determine how many | 296 # this, since a consumer will either either value to determine how many |
297 # bytes are available to read. | 297 # bytes are available to read. |
298 if 'CONTENT_LENGTH' in env and 'HTTP_CONTENT_LENGTH' not in env: | 298 if 'CONTENT_LENGTH' in env and 'HTTP_CONTENT_LENGTH' not in env: |
299 headers['Content-Length'] = env['CONTENT_LENGTH'] | 299 headers['Content-Length'] = env['CONTENT_LENGTH'] |
300 | 300 |
301 if 'CONTENT_TYPE' in env and 'HTTP_CONTENT_TYPE' not in env: | |
302 headers['Content-Type'] = env['CONTENT_TYPE'] | |
303 | |
301 bodyfh = env['wsgi.input'] | 304 bodyfh = env['wsgi.input'] |
302 if 'Content-Length' in headers: | 305 if 'Content-Length' in headers: |
303 bodyfh = util.cappedreader(bodyfh, int(headers['Content-Length'])) | 306 bodyfh = util.cappedreader(bodyfh, int(headers['Content-Length'])) |
304 | 307 |
305 return parsedrequest(method=env['REQUEST_METHOD'], | 308 return parsedrequest(method=env['REQUEST_METHOD'], |