我正在使用燒瓶和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