【问题标题】:favicon.ico results in 404 error in flask appfavicon.ico 在烧瓶应用程序中导致 404 错误
【发布时间】:2018-02-19 09:32:44
【问题描述】:

我在我的日志文件中发现了很多条目,这表明有人试图加载 /favicon.ico 和类似文件

GET - /favicon.ico
GET - /apple-touch-icon.png
GET - /apple-touch-icon-precomposed.png

我在网上阅读了很多关于这个问题的信息,但我无法摆脱它。这就是我所说的。首先,我将以下内容添加到我的 head 标签中

<link rel="shortcut icon" href="/static/favicon/favicon.ico" type="image/x-icon">

但是,即使我在标题中提供了这些信息,似乎也有一些浏览器不关心它并且仍然调用 /favicon.ico? 所以我想只是将 ico 文件放在根目录下并完成它,但它似乎不起作用?如果我打电话

http://localhost:5000/static/favicon/favicon.ico

我得到了图标,但是

http://localhost:5000/favicon.ico

不起作用(给出 404)?我清除了缓存并使用 Chrome 和 Safari 进行了尝试,但在这两种情况下我都得到 404?我在这里真的很茫然。如果我在静态文件夹中移动图像并调用

http://localhost:5000/static/favicon.ico

它可以工作,但根文件夹没有?我在这里错过了什么?

【问题讨论】:

    标签: html browser flask


    【解决方案1】:

    默认情况下,flask 只会在 /static 端点​​上提供文件。您可以添加自定义视图来处理默认的 /favicon 请求。

    flask 文档有更多关于这个主题的信息:

    https://flask.palletsprojects.com/en/1.1.x/patterns/favicon/

    import os 
    from flask import send_from_directory     
    
    @app.route('/favicon.ico') 
    def favicon(): 
        return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico', mimetype='image/vnd.microsoft.icon')
    

    【讨论】:

    • 很好,解决了这个问题。你知道我是否需要为苹果 icos 创建相同的,或者如果 favicon.ico 存在则不需要搜索?
    • 我认为 favicon.ico 是唯一默认触发的。所有其他都是可选的。您也可以将其他图标保留在 /static 中,并使用模板中的 url_for() 指向正确的位置,如文档第一部分所述。
    【解决方案2】:

    我遇到了一个非常相似的问题。我还没有必要的要点来为答案添加评论。所以我会用“你的答案”来做。对于那些需要关于如何使用 url_for () 的更具体答案的人来说,这是一种方法。

    <!-- Adding a favicon icon to Flask app -->
    <!-- SEE: https://favicon.io/favicon-converter/-->
    
    <link rel="shortcut icon"
          href="{{ url_for('static', filename='favicon.ico') }}">
    
    <link rel="apple-touch-icon"
          sizes="180x180"
          href="{{ url_for('static', filename='apple-touch-icon.png') }}">
    
    <link rel="icon"
          type="image/png"
          sizes="180x180"
          href="{{ url_for('static', filename='favicon-32x32.png') }}">
    
    <link rel="icon"
          type="image/png"
          sizes="16x16"
          href="{{ url_for('static', filename='favicon-16x16.png') }}">
    
    <link rel="manifest"
          href="site.webmanifest">
    

    要生成必要的文件,请使用以下链接:https://favicon.io/favicon-converter/ 所有文件都已复制到 /static 目录中。

    【讨论】:

      猜你喜欢
      • 2016-12-23
      • 2014-11-25
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      相关资源
      最近更新 更多