表单数据在python脚本中不可用

时间:2018-05-02 06:44:09

标签: python cgi

在Apache服务器上考虑以下脚本test.py

#!/usr/bin/env python

import cgi

cgi.test()

如果我打电话给http://domain.local/test.py?foo=bar输出说(等等):

QUERY_STRING
REQUEST_METHOD
    GET

Command Line Arguments
[]

Form Contents:
No form fields.

如果我使用POST请求发送数据,则QUERY_STRINGREQUEST_METHOD根本不会显示,而不是说表单内容部分仍为空。

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我通过解决方法解决了这个问题:

import urlparse
import sys

print "Content-Type: text/plain;charset=utf-8"
print

data=dict(urlparse.parse_qsl(sys.stdin.read()))

for field in data:
   print field,data[field]

在我的具体情况下,脚本只接受POST数据(我会在PHP中使用$ _POST,丢弃$ _GET)。它可以很容易地修改,以便能够解析GET数据,无论是代替POST还是POST。

但是,我仍然有兴趣知道为什么最初的方法没有成功。