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 页面的 每个 的
<head>
部分中(我在这里使用了百里香):
<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 Starter