为什么 Google Chrome 在我的烧瓶 url 上附加一个正斜杠,而有 none?

Why is Google Chrome appending a forward slash to my flask url when there is none?

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

/dictionary

但是Chrome渲染是这样的:

/dictionary/

根据烧瓶,这不是一回事。

这是我的 /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")

我的htmlurl:

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

它生成以下预期的 url:

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

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

“/”字符是正斜杠。说这个,strict_slashes,它要求 URL 如果设置了尾部斜线,或者要求 URL 没有尾部斜线,否则默认启用,导致这个问题.

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

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

您可以从这个答案中了解更多信息: