如何从Python CGI脚本读取客户端头信息?

22 投票
4 回答
12904 浏览
提问于 2025-04-15 21:50

我正在写一个非常简单的网络服务,使用Python编写,并在Apache服务器上以CGI的方式运行。

根据Python的文档(我忘了具体在哪里了),我可以使用sys.stdin来读取随机客户端发送过来的数据,这个方法一直都很好用。不过,我还想读取一些HTTP头信息,比如来访者的IP地址、用户代理等等。现在我希望保持简单,只使用Python的库(所以不使用mod-python)。我该怎么做呢?

4 个回答

5

正如这个页面所解释的,大部分的HTTP请求头信息会通过环境变量传递给你的CGI脚本。你可以运行cgi.test(),而不是直接运行你的脚本,这样可以看到环境信息(包括HTTP请求头)是如何显示给你访问的浏览器的。

15

这些信息是通过环境变量传递给CGI脚本的:

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

如果你是在CGI环境下运行程序,你不能直接读取HTTP头信息,但网页服务器会把很多相关信息放到环境变量里供你使用。你只需要从os.environ[]中提取这些信息就可以了。

环境变量的列表可能会很长。你可以通过在网上搜索“公共网关接口”来找到它们。例如,在http://www.ietf.org/rfc/rfc3875.txt这个链接中,它们被称为“元变量”。

撰写回答