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

sur*_*kar 8 python flask

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

if form.next.data is not None:
    return redirect(form.next.data)
Run Code Online (Sandbox Code Playgroud)

哪里form.next.data可以是外部域名的绝对网址,例如"www.google.com".但是,在将下一个值作为外部URL传递时,此重定向将重定向到http://mysitename/www.google.com404并失败.

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

xbb*_*xbb 18

我认为你需要添加一个前缀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")


cod*_*eek 5

在将其传递到重定向之前,请确保在 url 前附加“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)
Run Code Online (Sandbox Code Playgroud)