Spring Boot 自定义 favicon.ico 未显示

Posted

技术标签:

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

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

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

这些都不起作用。

    尝试将我自己的 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作为模板引擎

【问题讨论】:

【参考方案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)时遇到同样的问题,这对我来说效果很好:

    将 favicon.ico 放在 /resources/static 文件夹中。我还尝试将它放在 /resourses/ 文件夹中,它也可以正常工作,所以不要太担心文件夹。 在您的配置文件夹中创建一个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;
    

    如果您使用 Spring Security,请不要忘记通过将以下代码添加到您的 SpringSecurityConfiguration 来为您的网站图标资源添加 antMatcher(正如上面已经提到的 JaneXQ):
.antMatchers("/static/favicon.ico").permitAll()
    在您的 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】:

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

无论如何,我所做的是。

    从主类中移除@EnableWebMvc 根据 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

【讨论】:

以上是关于Spring Boot 自定义 favicon.ico 未显示的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot---自定义spring boot starter 问题

Spring Boot + Spring Security自定义用户认证

spring-boot 速成 自定义配置

企业级spring-boot案例-自定义Spring Boot Starter

企业级spring-boot案例-自定义Spring Boot Starter

自定义spring boot start