Spring @RequestMapping("/favicon.ico") 在 index.html 请求时不起作用

Spring @RequestMapping("/favicon.ico") does not work when requested from index.html

我曾经为 favicon.ico 找到映射,所以决定处理它。

对我来说最简单的事情是向控制器方法添加一个动作,@RequestMapping("/favicon.ico")。

我不再收到这些投诉(虽然我没有在 html 文件中请求 favicon.ico 自己,但我猜浏览器会自动执行此操作)。

当我访问 http://localhost:8080/favicon.ico 时,动作被触发了!

我将以下内容添加到我的 html 文件中:

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

但动作永远不会被击中。

我也试过了

<link href="http://localhost:8080/favicon.ico" rel="icon" type="image/x-icon" />

但是动作没有被击中。

我怀疑这与 get/post 请求有关,当我手动从浏览器请求它时,会发出一个获取请求。当来自 html 文件的其他内容时,Spring 将无法识别。

请不要推荐我做:

<mvc:resources mapping="/favicon.ico" location="/favicon.ico" />

因为我喜欢从我的控制器上做,因为我有一些逻辑。

会不会涉及一些缓存?

编辑:

我还应该提一下,我一直收到 tomcat 图标。看不到有关 favicon.ico 的任何信息。 tomcat 是否默认提供它并在我的操作中忽略 hit/forward 它?

我运行遇到了同样的问题。

当 spring 引导启动时,您可以在控制台中看到:

[...] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

您可以从 application.properties:

禁用 spring mvc favicon 处理程序
spring.mvc.favicon.enabled=false

来源:Spring Boot: Overriding favicon