如何在Flask中重定向到外部域?

时间:2014-04-28 14:04:55

标签: python flask

我需要在我的烧瓶应用程序中完成操作后重定向回外部URL。 代码看起来像这样

if form.next.data is not None:
    return redirect(form.next.data)

其中form.next.data可以是“www.google.com”等外部域的绝对网址。但是,在将下一个值作为外部网址传递时,此重定向会重定向到http://mysitename/www.google.com,并且会以404失败。

如何指定重定向到外部域并阻止Flask将其附加到我的域根目录?

2 个答案:

答案 0 :(得分:15)

我认为您需要在http://附加前缀https://"www.google.com"。否则Flask会将其视为app中的相对url。 所以下面将是404,因为它将进入" localhost:5000 / www.google.com"

@app.route('/test')
def test():
    return redirect("www.google.com")

但如果您尝试http://,它应该可以正常工作。

@app.route('/test')
def test():
    return redirect("http://www.google.com")

答案 1 :(得分:3)

请务必附加" http://"在重定向传递之前在网址前面。

s = form.next.data
if s is not None:
    if s.find("http://") != 0 and s.find("https://") != 0:
        s = "http://" + s
    return redirect(s)