Favicon无法正确渲染,看起来很乱

时间:2017-01-26 00:32:26

标签: spring-boot favicon

我的favicon似乎突然出现了。我不确定我做了什么改变导致它开始失败,但它曾经渲染得很好,现在它是乱码。

以下是它的样子:

enter image description here

我正在使用Spring Boot并且已经用Google搜索了所有关于如何让你的favicon出现的典型答案......但我没有运气。

我注意到的一件事(不确定这是否正常)是,当我访问favicon网址时,它不会将其作为图标加载到浏览器中,而是作为一堆文本加载。 / p>

以下是我访问localhost时发生的情况:8080 / favicon.ico网址:

enter image description here

我唯一可以想到的是,我最近改变了可能对favicon产生影响的是我的WebSecurityConfig.java ......我添加了一个REALM和基本身份验证。

这是WebSecurityConfig.java文件:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
  @Autowired
  private UserDetailsService userDetailsService;

  private static String REALM="MY_TEST_REALM";

  @Bean
  public PasswordEncoder passwordEncoder() {
      return new BCryptPasswordEncoder();
  }

  @Autowired
  public void globalSecurity (AuthenticationManagerBuilder auth) throws Exception
  {
    auth.userDetailsService(userDetailsService)
      .passwordEncoder(passwordEncoder());
  }

  @Override
  protected void configure(HttpSecurity http) throws Exception
  {
    // authenticate / authorize
    // authentication = who the hell are you? i.e. username/password
    // authorization = what can you access in the app?

    http
      .csrf().disable()
      .authorizeRequests()
        .antMatchers("/*").permitAll()
        .antMatchers("/js/**").permitAll()
        .antMatchers("/webinars/**").permitAll()
        .antMatchers("/img/**").permitAll()
        .antMatchers("/fonts/**").permitAll()
        .antMatchers("/register").permitAll()
        .antMatchers("/samcart").permitAll()
        .antMatchers("/sales").permitAll()
        .antMatchers("/sales/**").permitAll()
        .antMatchers("/paypal/**").permitAll()
        .antMatchers("/forgotPassword").permitAll()
        .antMatchers("proffesso-favicon.ico").permitAll()
        .antMatchers("/students/purchasedCourse.html").permitAll()
        .antMatchers("/students/courses/**").permitAll()
        .antMatchers("/teachers/courses/*/image").permitAll()
        .antMatchers("/teachers/courses/*/offers/*/image").permitAll()
        .antMatchers("/handlebars/**").permitAll()
        .antMatchers("/css/**").permitAll()
        .antMatchers("/admin/**").hasRole("ADMIN")
        .antMatchers("/admin").hasRole("ADMIN")
        .anyRequest().authenticated()
        .and()
      .httpBasic()
        .realmName(REALM)
        .authenticationEntryPoint(getBasicAuthEntryPoint())
        .and()
      .formLogin()
        .loginPage("/login")
        .defaultSuccessUrl("/students/courses")
        .successHandler(new NoRedirectSavedRequestAwareAuthenticationSuccessHandler())
        .permitAll()
        .and()
      .logout()
        .logoutSuccessUrl("/").permitAll()
        .and()
      .sessionManagement()
        .maximumSessions(1);
  }

  @Bean
  public CustomBasicAuthenticationEntryPoint getBasicAuthEntryPoint(){
      return new CustomBasicAuthenticationEntryPoint();
  }

  /* To allow Pre-flight [OPTIONS] request from browser */
  @Override
  public void configure(WebSecurity web) throws Exception {
      web.ignoring().antMatchers(HttpMethod.OPTIONS, "/**");
  }

  @Bean
  public HttpSessionEventPublisher httpSessionEventPublisher() {
      return new HttpSessionEventPublisher();
  }

  @Bean()
  public SecurityEvaluationContextExtension securityEvaluationContextExtension () {
    return new SecurityEvaluationContextExtension();
  }
}

2 个答案:

答案 0 :(得分:1)

不确定你是否想到这一点。我最近遇到了同样的事情,我的favicon看起来就像截图中的那个。对我来说,它是由maven资源过滤引起的。我添加了* .ico的排除,如下所示:

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
                <exclude>**/*.ico</exclude>
        </excludes>
    </resource>
</resources>

答案 1 :(得分:0)

我遇到的确切问题是,在弄清楚原因之前,我几乎要扯掉头发了。 ico文件似乎以某种方式被“编译”。当您通过url/favicon.ico或在已编译的war或jar文件中直接访问此文件时,就会发生这种情况。

我在pom.xml中包含以下几行,这似乎是导致问题的原因。删除它们后,问题已解决

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>