从Python CGI脚本中读取客户端的头文件?

jbr*_*eed 17 python cgi http-headers

我正在编写一个非常简单的Web服务,用Python编写并在Apache服务器上作为CGI运行.

根据Python文档(某处......我忘了哪里),我可以使用sys.stdin来读取随机客户端发布的数据,这一切都运行正常.但是,我希望能够读取HTTP头信息 - 传入IP,用户代理等.我现在也想通过仅使用Python库(因此没有mod-python)来保持它非常简单.我该怎么做呢?

sie*_*iew 16

如果您作为CGI运行,则无法直接读取HTTP标头,但Web服务器会将大部分信息放入环境变量中.你可以从os.environ []中选择它

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


bal*_*pha 9

这些是通过环境提供给CGI脚本的:

import os
user_agent = os.environ["HTTP_USER_AGENT"]
ip = os.environ["REMOTE_ADDR"]
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 5

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