如果没有,Google Chrome为什么要在我的烧瓶网址后面加上正斜杠?

时间:2019-07-12 20:53:23

标签: python-3.x google-chrome flask routes url-routing

在各种浏览器上测试基于Flask的网络应用时,我发现Chrome浏览器在我的一条路由和仅一条路由之后附加了“ /”。此行为导致页面未找到错误,因为我的路线是这样的:

/dictionary

但是Chrome渲染是这样的:

/dictionary/

根据烧瓶的不同而不同。

这是我的/词典路线和方法:

@app.route("/dictionary", methods=["GET", "POST"])
def dictionary():
    results = []
    if request.method == 'POST':
        word = request.form.get("word")
        # do stuff here
        return render_template("results", results=results)
    return render_template("dictionary.html")

我的html网址:

<a href="{{url_for(dictionary)}}"> </a>

它会生成以下预期网址:

<a href="/dictionary"></a>

请注意,这种奇怪的行为仅在Chrome浏览器中可以看到。它在Opera,Firefox和EI上运行良好。更奇怪的是,它仅在这一条路线上。具有类似方法和网址构建的其他路由正常。 N.B:我可以将路线更改为“ / dictionary /”,这样它可以工作,但是我希望保留“ / url_example”这样的路线。先感谢您。

1 个答案:

答案 0 :(得分:1)

“ /”字符是正斜杠。也就是说,strict_slashes(如果已设置,则要求URL带有斜杠,否则要求URL不带斜杠),默认情况下已启用,导致此问题。

您可以通过以下操作在整个应用中禁用严格的斜杠:

app = Flask(__name__)
app.url_map.strict_slashes = False

您可以从以下答案中了解更多信息:https://stackoverflow.com/a/33285603