S
samwyse
I've just now submitted two issues to the issue tracker:
1491 BaseHTTPServer incorrectly implements response code 100
RFC 2616 sec 8.2.3 states, "An origin server that sends a 100
(Continue) response MUST ultimately send a final status code, once the
request body is received and processed, unless it terminates the
transport connection prematurely." The obvious way to do this is to
invoke the 'send_response' method twice, once with a code of 100, then
with the final code. However, BaseHTTPServer will always send two
headers ('Server' and 'Date') when it send a response. One possible
fix is to add an option to the method to suppress sending headers;
another is to add the following code to the 'send_response' method,
immediately prior to the calls to 'self.send_header':
if code == 100:
return
The more paranoid among us may wish to use this code instead:
if code == 100:
expectation = self.headers.get('Expect', "")
if expectation.lower() == '100-continue':
return
1492 BaseHTTPServer hard-codes Content-Type for error messages
The send_error method always sends a Content-Type of 'text/html'.
Other content types are both possible and desirable. For example,
someone writing a REST server might wish to send XML error messages.
Following the example of DEFAULT_ERROR_MESSAGE, I propose adding the
following in the appropriate places:
91a92,94
< self.send_header("Content-Type", "text/html")
---
1491 BaseHTTPServer incorrectly implements response code 100
RFC 2616 sec 8.2.3 states, "An origin server that sends a 100
(Continue) response MUST ultimately send a final status code, once the
request body is received and processed, unless it terminates the
transport connection prematurely." The obvious way to do this is to
invoke the 'send_response' method twice, once with a code of 100, then
with the final code. However, BaseHTTPServer will always send two
headers ('Server' and 'Date') when it send a response. One possible
fix is to add an option to the method to suppress sending headers;
another is to add the following code to the 'send_response' method,
immediately prior to the calls to 'self.send_header':
if code == 100:
return
The more paranoid among us may wish to use this code instead:
if code == 100:
expectation = self.headers.get('Expect', "")
if expectation.lower() == '100-continue':
return
1492 BaseHTTPServer hard-codes Content-Type for error messages
The send_error method always sends a Content-Type of 'text/html'.
Other content types are both possible and desirable. For example,
someone writing a REST server might wish to send XML error messages.
Following the example of DEFAULT_ERROR_MESSAGE, I propose adding the
following in the appropriate places:
91a92,94
345c348# Default error content-type
DEFAULT_ERROR_TYPE = 'text/html'
< self.send_header("Content-Type", "text/html")
---