2010-04-20 48 views
14

我在写一个非常简单的web服务,用Python编写,并在Apache服务器上作为CGI运行。从Python CGI脚本中读取客户端的头文件?

根据Python文档(某处...我忘了在哪里),我可以使用sys.stdin读取由随机客户端发布的数据,并且这一直工作正常。但是,我希望能够读取HTTP头信息 - 传入IP,用户代理等。我现在还想保持它非常简单,只使用Python库(所以不需要mod-python)。我该怎么做呢?

回答

13

如果你正在运行的CGI,你不能直接读取HTTP头,但Web服务器把很多的信息到环境变量为你。你可以从os.environ中选择它[]

可能存在的环境变量列表相当长。您可以通过搜索“公共网关接口”来查找它。例如,在http://www.ietf.org/rfc/rfc3875.txt中,它们被称为“元变量”。

+0

谢谢!那正是我需要的。 – jbreed 2010-04-26 16:40:25

4

正如this page所解释的,大多数HTTP请求标头都可以通过环境变量提供给CGI脚本。运行cgi.test()而不是脚本来查看显示回访问浏览器的环境(包括HTTP请求标头)。

8

这些都是通过环境给CGI脚本:

import os 
user_agent = os.environ["HTTP_USER_AGENT"] 
ip = os.environ["REMOTE_ADDR"]