我正在使用Flask,在本地开发时,所有这些都可以。但是,当使用nginx和代理传递gunicorn进行部署时,url_for
似乎在向URL添加尾随/
,这会在从网址中提取json数据时导致错误。这是相关代码:
@app.route('/save', methods=['POST'])
def save():
name = request.form['name'];
email = request.form['email']
data = json.dumps({"name": name, "email": email})
return redirect(url_for('.record', data=data))
@app.route("/record")
def record():
// error here because of trailing /
data = json.loads(request.args['data'])
//... more code
我非常擅长使用Flask和超级枪手,所以如果我错过任何必要的信息来获取帮助,请告诉我。这是nginx中的proxy_pass配置:
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
然后我只是将gunicorn作为服务运行:
gunicorn --bind 0.0.0.0:8000 app:app
打破网址的示例
https://<ipaddress>/record?data=%7B%22name%22%3A+%22fdaf%22%2C+%22email%22%3A+%22fsd%40sfd.com%22%7D/