我在写一个非常简单的web服务,用Python编写,并在Apache服务器上作为CGI运行。从Python CGI脚本中读取客户端的头文件?
根据Python文档(某处...我忘了在哪里),我可以使用sys.stdin读取由随机客户端发布的数据,并且这一直工作正常。但是,我希望能够读取HTTP头信息 - 传入IP,用户代理等。我现在还想保持它非常简单,只使用Python库(所以不需要mod-python)。我该怎么做呢?
我在写一个非常简单的web服务,用Python编写,并在Apache服务器上作为CGI运行。从Python CGI脚本中读取客户端的头文件?
根据Python文档(某处...我忘了在哪里),我可以使用sys.stdin读取由随机客户端发布的数据,并且这一直工作正常。但是,我希望能够读取HTTP头信息 - 传入IP,用户代理等。我现在还想保持它非常简单,只使用Python库(所以不需要mod-python)。我该怎么做呢?
如果你正在运行的CGI,你不能直接读取HTTP头,但Web服务器把很多的信息到环境变量为你。你可以从os.environ中选择它[]
可能存在的环境变量列表相当长。您可以通过搜索“公共网关接口”来查找它。例如,在http://www.ietf.org/rfc/rfc3875.txt中,它们被称为“元变量”。
正如this page所解释的,大多数HTTP请求标头都可以通过环境变量提供给CGI脚本。运行cgi.test()而不是脚本来查看显示回访问浏览器的环境(包括HTTP请求标头)。
这些都是通过环境给CGI脚本:
import os
user_agent = os.environ["HTTP_USER_AGENT"]
ip = os.environ["REMOTE_ADDR"]
谢谢!那正是我需要的。 – jbreed 2010-04-26 16:40:25