I’m writing a very simple web service, written in Python and run as CGI on an Apache server.
According to Python docs (somewhere… I forgot where), I can use sys.stdin to read the data POSTed by a random client, and this has been working fine. However, I would like to be able to read the HTTP header information as well – incoming IP, user agent, and so on. I’d also like to keep it very simple for now, by using only Python libraries (so no mod-python). How do I do this?
If you are running as a CGI, you can’t read the HTTP header directly, but the web server put much of that information into environment variables for you. You can just pick it out of os.environ[]
The list of environment variables that might be there is pretty long. You can find it by doing a web search for “common gateway interface”. For example, in http://www.ietf.org/rfc/rfc3875.txt they are called “meta-variables”.