Pierre Quentel <[email protected]> added the comment:
The QUERY_STRING value is always set by the code at lines 1135-1137 of
http.server:
for k in ('QUERY_STRING', 'REMOTE_HOST', 'CONTENT_LENGTH',
'HTTP_USER_AGENT', 'HTTP_COOKIE', 'HTTP_REFERER'):
env.setdefault(k, "")
The RFC for CGI has not evolved since 2004, probably because the technology is
stable, and also because other, more efficient protocols have been defined to
avoid the "CGI overhead" (FastCGI for instance).
I think that http.server should only implement the "meta-variables" defined in
RFC 3875:
- AUTH_TYPE CONTENT_LENGTH CONTENT_TYPE GATEWAY_INTERFACE PATH_INFO
PATH_TRANSLATED QUERY_STRING REMOTE_ADDR REMOTE_HOST REMOTE_IDENT REMOTE_USER
REQUEST_METHOD SCRIPT_NAME SERVER_NAME SERVER_PORT SERVER_PROTOCOL
SERVER_SOFTWARE. Some of these must always be set (eg QUERY_STRING,
REQUEST_METHOD, SERVER_NAME...) but for other ones, there are conditions (for
instance for CONTENT_LENGTH: "The server MUST set this meta-variable if and
only if the request is accompanied by a message-body entity")
- "protocol-specific meta variables" : for HTTP, variables determined by the
HTTP request headers such as HTTP_COOKIE (cf section 4.1.18. Protocol-Specific
Meta-Variables)
Other meta variables are probably beyond the scope of a module in the standard
library.
In short, in my opinion the issue can be closed.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue10486>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com