如何在Python CGI脚本中读取所有HTTP标头?

Ale*_*hel 5 python cgi http-headers

我有一个python CGI脚本,它接收包含特定HTTP标头的POST请求。您如何阅读和解析收到的标头?我没有使用BaseHTTPRequestHandlerHTTPServer。我收到的邮件正文sys.stdin.read()。谢谢。

And*_*des 5

可以使用python在apache CGI脚本中获取自定义请求标头的值。解决方法与类似。

Apache的mod_cgi将为收到的每个HTTP请求标头设置环境变量,以这种方式设置的变量都将带有HTTP_前缀,因此例如x-client-version: 1.2.3可以作为variable使用HTTP_X_CLIENT_VERSION

因此,要读取上述自定义标头,只需调用os.environ["HTTP_X_CLIENT_VERSION"]

下面的脚本将打印所有HTTP_*标题和值:

#!/usr/bin/env python

import os

print "Content-Type: text/html"
print "Cache-Control: no-cache"
print

print "<html><body>"
for headername, headervalue in os.environ.iteritems():
    if headername.startswith("HTTP_"):
        print "<p>{0} = {1}</p>".format(headername, headervalue)


print "</html></body>"
Run Code Online (Sandbox Code Playgroud)


Noc*_*wer 0

您可能想查看Python 标准库中包含的cgi 模块。它似乎有一个cgi.parse_header(string)函数,您可能会发现它对尝试获取标头很有帮助。

  • 是的。但你如何获得它们呢? (6认同)