我必须一次提交两个表单,我不想要javascript。所以我想我可以将表格发布给自己,做我的工作然后发布到第三方支付提供商。这是为了使订单显示在我们的数据存储区中。该手册说明了如何通过HTTP POST提交表单,但我不知道如何将用户的浏览器指向此页面。有办法吗?而不是直接将表格发布到第三方,我想这样做:
def post(self):
import urllib
#do my work
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("http://www.thirdparty.com/cgi-bin/query", params)
#direct the user to the reponse page but how?
提交表单是有效的,但用户必须带到页面。有没有办法实现这个目标?
感谢您的帮助
答案 0 :(得分:2)
你可以这样做:
获取帖子表单,在您的服务器上执行操作,然后返回重定向页面,其中包含具有相同参数的表单,但对远程目标执行操作。
然后,您可以使用小js自动提交表单,并向用户提供“不重定向?点击此处”等内容。
所以它不像你期望的那样工作,它也使用了js,但我没有找到更好的方法来处理这个工作。希望这可以以任何方式提供帮助。
答案 1 :(得分:2)
您可以使用307来重定向,这会保留所有POST参数(您需要确保您的servlet使用的POST参数与远程服务器使用的POST参数相同)。
self.response.set_status(307)
self.response.headers['Location'] = "http://www.thirdparty.com/cgi-bin/query"
但是,并非所有浏览器都能正确实现307。见这里:Response.Redirect with POST instead of Get?
这个回复很旧,所以也许更多浏览器现在可以正确处理307。