How to read POSTed data
Pierre Quentel
quentel.pierre at wanadoo.fr
Sun Feb 6 15:11:55 EST 2005
> Pierre, I am repeating some questions I already stated in another thread,
> 'CGI POST problem', but do you have any opinions on how CGIHTTPServer's
> do_POST handles requests? It looks to me like it always expects form data
> to be part of the POST command header, in the path of the URL, just like a
> GET request. Am I understanding the code incorrectly?
The code in CGIHTTPServer is not very easy to understand, but it does
read the request body, as many bytes as indicated in the Content-Length
header. See line 262 (in the Python 2.4 distribution) or 250 in Python
2.3 (this is the Windows version) :
data = self.rfile.read(nbytes)
Then this data is sent to the standard input of the CGI script. If this
script is a Python program using the cgi module, it usually creates a
cgi.FieldStorage() instance : upon creation, the standard input is read
(in self.read_urlencoded() for instance) and the string collected is
processed to produce a dictionary-like object, with keys matching the
form field names
This is compliant with the CGI specification (HTTP doesn't say anything
about the management of data sent by POST requests). The code I sent is
an alternative to CGI, leaving the management of this data (available in
self.body) to a method of the RequestHandler instance
Regards,
Pierre
More information about the Python-list
mailing list