如何防止在 GET 请求后调用 `GET /favicon.ico HTTP/1.1`

Vis*_*rez 3 python flask

我有一个 Python Flask Web 应用程序。每当我通过 Chrome 浏览器访问任何端点时,都会调用一个请求来检索网页(这是预期的),但随后,Chrome 似乎会向Chrome 刚刚点击的同一端点GET发送一个后续请求。GETfavicon.ico

例如,我的应用程序在路线上暴露了以下端点/(如下所示):

# General Landing Page
@app.route('/')
def index():
    return render_template("index.html", title="Home")
Run Code Online (Sandbox Code Playgroud)

当我使用 Google Chrome 访问此端点时,index.html页面返回得很好。但我的日志消息显示以下内容:

 env FLASK_APP=app/routes.py flask run --port 5001
 * Running on http://127.0.0.1:5001/ (Press CTRL+C to quit)
127.0.0.1 - - [18/Feb/2020 23:15:23] "GET / HTTP/1.1" 200 -
[2020-02-18 23:15:23,647] ERROR in app: Exception on /favicon.ico [GET]
Traceback (most recent call last):
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,/端点被命中并返回状态代码200 OK,但随后的调用会favicon.ico出错。如何处理这个问题?

Eja*_*jaz 5

favicon.ico是用于显示在浏览器选项卡或书签上的图标的默认文件名。

如果您想放置一个图标,您可以使用该名称创建一个图标favicon.ico并将其放在static应用程序的目录中。并在您的 html 文件中放置一个链接标记。

<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
Run Code Online (Sandbox Code Playgroud)

请点击此链接以获取 Flask 文档的更多信息。

如果您想跳过此请求,请遵循此问题GET