我有一个upload.php页面,它通过表单将一些数据发送到Python CGI脚本,然后我在后台处理数据,我想重定向到另一个php页面,response_page.php,它显示基于的信息处理过的数据。我不能将数据发送回PHP并同时进行重定向。
我的代码:
#!/usr/bin/env python
import cgi
import cgitb
cgitb.enable()
try:
form = cgi.FieldStorage()
fn = form.getvalue('picture_name')
cat_id = form.getvalue('selected')
except KeyError:
print "Content-type: text/html"
print
print "<html><head>"
print "</head><body>error</body></html>"
else:
...
# here I processed the form data and stored it in data_to_be_displayed
# data to be processed and displayed in the response page
data_to_be_displayed = [1,2,3]
import httplib, json, urllib
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
conn = httplib.HTTPConnection('192.168.56.101:80')
#converting list to a json stream
data_to_be_displayed = json.dumps(data_to_be_displayed, ensure_ascii = 'False')
postData = urllib.urlencode({'matches':data_to_be_displayed})
conn.request("POST", "/response_page.php", postData, headers)
response = conn.getresponse()
if response.status == 200:
print "Location: /response_page.php"
print # to end the CGI response headers.
conn.close()
我发现了这个:How to make python urllib2 follow redirect and keep post method,但我不明白我应该如何在我的代码中使用urllib2.HTTPRedirectHandlerClass。
答案 0 :(得分:0)
为什么不使用liburl2发布到response_page.php?
import urllib
import urllib2
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
data_to_be_displayed = json.dumps(data_to_be_displayed, ensure_ascii = 'False')
postData = urllib.urlencode({'matches':data_to_be_displayed})
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()
作为参考,我使用了蟒蛇的想法&#39;文件:
https://docs.python.org/2/howto/urllib2.html#headers
您也可以考虑将Twisted apt用于更高级别的代码:
https://twistedmatrix.com/
修改强>
在更好地了解您的要求之后,我发现这篇文章提到重定向307完全是您想要的(如果我现在理解的话):
https://softwareengineering.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect