【问题标题】:Spring Boot custom favicon.ico not showingSpring Boot 自定义 favicon.ico 未显示
【发布时间】:2018-02-28 08:04:27
【问题描述】:

我知道这个问题已经被反复问过,并且有几种解决方案。除了建议为此编写您自己的配置 bean 的那些之外,我已经尝试了其中的几个。我不想做所有这些只是为了显示一个它接缝过度的小图标。但我无法让它工作。这些是我目前尝试过的解决方案。

  1. 只需在静态资源下添加 favicon.ico,它应该可以工作....它没有。
  2. spring.mvc.favicon.enabled=false 在 application.properties 中,根本没有显示任何网站图标(我猜这就是重点)。
  3. 尝试了 2 个将网站图标作为链接包含在 html 页面中的示例。像这样: <link rel="icon" type="image/png" href="favicon.png" /> <link rel="icon" type="image/x-icon" href="favicon.ico" />

这些都不起作用。

  1. 尝试将我自己的 favicon 重命名为其他名称并按上述方式引用它。不工作。

在浏览器中检查页面时,尽管没有显示图标,但有时我根本没有打印出任何错误,或者我收到一条错误消息,指出 GET http://localhost:8080/myapp/favicon.png 404 () 其中将类型引用为 JSON(我觉得很奇怪)。

我的想法已经用完了,所以如果有人能告诉我为什么这不起作用,请告诉我。我是否可能忘记了其中一个神奇的弹簧注释? 这就是我的主要课程的样子。

@SpringBootApplication 
@ComponentScan
@Configuration
@EnableWebMvc
public class JobengineMonitorApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(JobengineMonitorApplication.class, args);
    }

 }

我使用thymeleaf作为模板引擎

【问题讨论】:

    标签: spring-mvc spring-boot thymeleaf favicon


    【解决方案1】:

    我遇到了同样的问题并修复它删除 @EnableAdminServer 注释

    【讨论】:

      【解决方案2】:

      我将我的 favicon 保存为 src/main/resources/static/favicon.ico,这是一个简单的 .png 下载文件

      在我尝试其他浏览器并且它运行良好之前无法显示它 - 所以请尝试清除浏览器缓存,或尝试在其他浏览器上进行测试

      【讨论】:

      • 很好的提醒 - 在尝试了其中一些解决方案后清除浏览器缓存!我尝试了多种解决方案(谁知道有多少会起作用),但只有在清除浏览器缓存后我的网站图标才会出现。对我来说,我不必配置自定义的 favicon bean,所以尝试更简单的修复,清除缓存,看看是否有效!
      【解决方案3】:

      尝试将 th:href 替换为 href。它对我有用。

      <link rel="icon" href="/favicon.ico" type="image/ico">
      

      【讨论】:

      • 这是否解决了这个问题? OP没有提到使用th:href
      【解决方案4】:

      如果有人在使用较新版本的 Spring(在我的情况下为 spring boot 2.4.4)时遇到同样的问题,这对我来说效果很好:

      1. 将 favicon.ico 放在 /resources/static 文件夹中。我还尝试将它放在 /resourses/ 文件夹中,它也可以正常工作,所以不要太担心文件夹。
      2. 在您的配置文件夹中创建一个FaviconConfiguration,内容如下:
      @Configuration
      public class FaviconConfiguration {
      
          @Bean
          public SimpleUrlHandlerMapping customFaviconHandlerMapping() {
              SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
              mapping.setOrder(Integer.MIN_VALUE);
              mapping.setUrlMap(Collections.singletonMap(
                      "/static/favicon.ico", faviconRequestHandler()));
              return mapping;
          }
      
          @Bean
          protected ResourceHttpRequestHandler faviconRequestHandler() {
              ResourceHttpRequestHandler requestHandler
                      = new ResourceHttpRequestHandler();
              requestHandler.setLocations(Collections.singletonList(new ClassPathResource("/")));
              return requestHandler;
          }
      }
      
      1. 如果您使用 Spring Security,请不要忘记通过将以下代码添加到您的 SpringSecurityConfiguration 来为您的网站图标资源添加 antMatcher(正如上面已经提到的 JaneXQ):
      .antMatchers("/static/favicon.ico").permitAll()
      
      1. 在您的 html 中明确使用指向您的自定义网站图标的链接。为此,只需按以下方式将以下链接放在您的 html 页面的 每个&lt;head&gt; 部分中(我在这里使用了百里香):
      <head>
          ...
          <link rel="icon" type="image/ico" th:href="@{../static/favicon.ico}">
          ...
      </head>
      

      【讨论】:

      • 我讨厌这是我唯一要做的事情。网站图标被夸大了,但这有效!
      • 是的,先生。我花了几个小时做了一些研究,然后才得到它对我来说很好
      【解决方案5】:

      由于某种原因,.ico 格式无法正常工作。我只是放置了一个 png 图像,然后 spring 自动选择了 favicon。

      我将 png 图片放在 \src\main\resources\public 中

      春靴+百里香

      【讨论】:

        【解决方案6】:

        将您的favicon.png 放在src/main/resources/public 下,并将其添加到您的*.html 页面中的header 部分

         <link rel="shortcut icon" type="image/png" th:href="@{favicon.png}"/>
        

        【讨论】:

          【解决方案7】:

          我发现我必须将我的 favicon.ico 文件放入:

          src/main/resources/public
          

          【讨论】:

          • 可以分享一下配置吗?我也有它在公共,但仍然默认加载
          • @alex 我没有为此使用特殊配置
          【解决方案8】:

          我通过将 favicon.ico 放入 main/resource/static 并将这些行添加到我的安全配置中解决了这个问题

           httpSecurity
                      .authorizeRequests()
                          .antMatchers( "/favicon.ico").permitAll()
          

          【讨论】:

            【解决方案9】:

            好的,现在这似乎可以正常工作了。当然,我在大吵大闹之后设法让它工作了:)。

            无论如何,我所做的是。

            1. 从主类中移除@EnableWebMvc
            2. 根据 url 添加 ../ 到 href 例如 /index 很好,但 /edit/something.html 不是

            很抱歉浪费了人们的时间,但希望这对像我这样的新秀有用

            【讨论】:

            • 您尝试过我提出的解决方案了吗?我的项目中是否正在运行,并且看起来很容易并且没有配置
            • 为什么要删除 EnableWebMVC ?您的尝试 (1) 奏效了吗?在静态资源中设置“favico.ico”。我对此有疑问。
            【解决方案10】:

            我也有这个与 SpringBoot 配置,并且正在工作

            <link rel="shortcut icon" type="image/png" th:href="@{/img/favicon.png}"/>
            

            以及 resources/public/img

            下的 favicon.png

            【讨论】:

              猜你喜欢
              • 2023-03-27
              • 2023-01-17
              • 2020-10-24
              • 2017-10-17
              • 1970-01-01
              • 1970-01-01
              • 2018-05-07
              • 2022-06-14
              • 2018-11-11
              相关资源
              最近更新 更多