favicon.ico未找到错误?

14

我有一个应用程序,使用Spring Security 3在Tomcat上运行。我没有为我的网站定义任何favicon。但是当我在我的IDE中运行应用程序并从登录页面登录后,有时会将我的页面重定向到:

http://localhost:8080/favicon.ico

并说:

404 Not Found

这里有一个主题:http://forum.springsource.org/showthread.php?100901-redirect-to-favicon.ico,然而我没有定义一个favicon.ico,Spring Security 3是否默认需要它(如果是,为什么有时会发生这种情况?)

2个回答

19

以下是解释:

问题在于,当浏览器缓存为空并且用户进入时,会发生以下情况:

  • 用户请求URL“/”。此URL已被缓存。
  • 浏览器向“/favicon.ico”发送请求。此URL成为身份验证后重定向的新URL。
  • 用户提交登录表单并被重定向到“/favicon.ico”。

要解决这个问题,您需要将“/favicon.ico”设置为非安全资源:

<intercept-url pattern="/favicon.ico" access="ROLE_ANONYMOUS" />
取自:http://blog.idm.fr/2010/09/spring-security-redirecting-to-faviconico.html

当我试图为我的Grails应用程序解决这个问题时,我偶然发现了这个问答。我正在使用修改后的URLMappings配置来处理我的AngularJS/Grails应用程序,其中Grails主要是一个REST后端。Spring Security用于ajax身份验证,并且我在Chrome中遇到了这个问题。对于Grails用户,请在UrlMappings中添加一条条目,如:"/favicon.ico"(controller: "home", action: "ajaxSuccess"),其中ajaxSuccess包含重定向到您想要在认证成功时将用户发送到的位置的代码。 - th3morg
这个问题在这里有一个很好的描述:http://www.webweaver.nu/html-tips/favicon.shtml - Bob Horn

0
对于Grails 3.0.11和Spring Security Core 3.0.2,需要在application.groovy文件的以下部分添加"IS_AUTHENTICATED_ANONYMOUSLY":
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
...
..
.
[pattern: '/favicon.ico',      access: ['IS_AUTHENTICATED_ANONYMOUSLY']]
]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接