我试图在Flask模拟服务器端表单后期操作。 使用Requests lib我做后期操作:
@flask_app.route('/hello',methods=['GET','POST'])
def hello():
r = requests.post(
"https://somesite.hello"
, data= {'user': 'bill','pass': 123})
return r.text
#return redirect("https://somesite.hello")
它的工作。但是当我通过html发布真实形式时,它也会进行重定向。 在#1网址后 http://mysite.hello:5000/hello ,但我需要来自#1但来自#2 https://somesite.hello的网址如何同时执行1和2?谢谢!
UPD:
我找到了一些解决方案,我不是很喜欢它,因为用户会看到"重定向到结算页面"页面一秒钟。可能有人知道如何处理请求并重定向以获得一些结果?
@flask_app.route('/hello',methods=['GET','POST'])
def hello():
url = "https://somesite.hello"
return flask_app.make_response("""
<html>
<body onload='document.forms[0].submit()'>
Redirecting to billing page...
<form action='%s' method='post'>
<input type='hidden' name='user' value='%s'>
<input type='hidden' name='pass' value='%s'>
</form>
</body>
</html>
"""%(url
,'bill'
,123))
答案 0 :(得分:1)
只是不要遵循重定向并将您自己的重定向发送到以下页面:
r = requests.post('some.url', data={'some': 'data'}, allow_redirects=False)
return redirect(r.headers['location'])
我们提交表单数据,但不要使用请求进行重定向。相反,我们将重定向传递给最终用户。但是,如果付款处理器使用Cookie来保留状态(很可能会这样做),这将无效,因为some.url
为您的请求设置的Cookie无法传递给some.url
。