表单数据在python scrip中不可用

2024-04-27 02:31:46 发布

您现在位置:Python中文网/ 问答频道 /正文

在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根本不会出现,更不用说表单内容部分仍然是空的

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


Tags: pytestimport服务器env脚本httpstring
1条回答
网友
1楼 · 发布于 2024-04-27 02:31:46

我用一种变通方法解决了这个问题:

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中使用$\u POST,丢弃$\u GET)。它可以很容易地被修改,以便能够解析GET数据,无论是代替POST还是除了POST

然而,我仍然想知道为什么最初的方法没有奏效

相关问题 更多 >