我正在使用烧瓶和Javascript的组合。在用户从网页输入后,我发送一个JSON对象回到Flask服务器。即:POST方法重定向后出现烧瓶错误
var xhr = new XMLHttpRequest();
xhr.open('POST', '/completed/');
xhr.setRequestHeader('Content-Type', 'application/json');
var stringifiedObject = dataResultToJSON(data);
xhr.send(stringifiedObject);
然后在瓶:
@main_view.route('/completed/', methods=['POST'])
def completed():
if (request.headers['Content-Type'].startswith('application/json')):
#do stuff here
return redirect(url_for("main_view.home"))
@main_view.route('/')
def home():
logger.debug(">>home")
return render_template('home.html')
当烧瓶重定向到asfter阿贾克斯POST我得到以下控制台输出的 '家':
DEBUG:myapp:>>home
INFO:werkzeug:127.0.0.1 - - [24/Apr/2016 20:13:15] "GET/HTTP/1.1" 200 -
INFO:werkzeug:127.0.0.1 - - [24/Apr/2016 20:13:15] "GET /%3C!DOCTYPE%20html%3E%3C!-- (... entire web page html)
奇怪的是上面的第二条INFO语句 - 当我从其他地方重定向到主目录时,我不会打印此行 - 只有当我从“已完成”POST方法重定向时才会出现此行。 WERKZEUG记录整个home.html的网页HTML和我在Web客户端的错误:
NetworkError: 404 NOT FOUND - http://127.0.0.1:5000/%3C!DOCTYPE%20html%3E%3C!-- (... entire web page html)
我还添加代码= 307重定向按这里:Make a POST request while redirecting in flask但仍然得到了同样的404错误。
我被困在如何解决这个问题。
我的信念是,你正在使用JavaScript重定向到POST的结果。这将是'home'呈现的HTML。您可能只想'完成'来'返回url_for('main_view.home')'而不是返回重定向。 – dirn