programing

Spring Boot 사용자 지정 favicon.ico가 표시되지 않음

muds 2023. 8. 9. 21:07
반응형

Spring Boot 사용자 지정 favicon.ico가 표시되지 않음

저는 이 질문이 반복적으로 제기되었고 몇 가지 해결책이 있다는 것을 알고 있습니다.이를 위해 사용자 자신의 구성을 작성하는 것을 제안하는 것을 제외하고는 여러 가지를 시도했습니다.저는 그 모든 것을 단지 그것이 과잉 살상하는 것처럼 보이는 작은 아이콘을 보여주기 위해.하지만 저는 그것을 작동시킬 수 없습니다.이것들이 제가 지금까지 시도한 해결책들입니다.

  1. 정적 리소스 아래에 favicon.ico를 추가하기만 하면 작동해야 합니다. ...그렇지 않습니다.
  2. application.properties에서 spring.mvc.mvicon.enabled=false, favicon은 전혀 표시되지 않습니다(이것이 전체 포인트인 것 같습니다).
  3. 했습니다.html 페에가을 favicon 함포하 2지습다니시했도예.이와 같은 경우: <link rel="icon" type="image/png" href="favicon.png" /> <link rel="icon" type="image/x-icon" href="favicon.ico" />

둘 다 안 됩니다.

  1. 내 자신의 페이비콘의 이름을 다른 것으로 바꾸고 위와 같이 참조했습니다.작동하지 않습니다.

브라우저에서 페이지를 검사할 때 아이콘이 표시되지 않음에도 불구하고 오류가 전혀 출력되지 않거나 다음과 같은 오류가 발생합니다.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);
    }

 }

템플릿 엔진으로 타임리프를 사용하고 있습니다.

favicon.ico를 main/resource/static에 넣고 이 행을 보안 구성에 추가하여 이 문제를 해결했습니다.

 httpSecurity
            .authorizeRequests()
                .antMatchers( "/favicon.ico").permitAll()

나도 SpringBoot 구성으로 이것을 가지고 있고 작동하고 있습니다.

<link rel="shortcut icon" type="image/png" th:href="@{/img/favicon.png}"/>

그리고 resources/public/img 아래의 favicon.png

Spring의 최신 버전(나의 경우 Spring boot 2.4.4)을 사용하여 동일한 문제에 직면한 사람이 있다면, 다음과 같은 시나리오가 저에게 잘 작동했습니다.

  1. favicon.ico를 ./resources/static폴더를 누릅니다.저는 또한 그것을 그냥 넣으려고 노력했습니다./resourses/폴더도 잘 작동했으니까 폴더에 대해서는 그렇게 걱정하지 마세요.
  2. 성을 합니다.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;
    }
}
  1. Spring Security를 추가하는 것을 antMatcherSpringSecurityConfiguration(SpringSecurityConfiguration)에 다음 코드를 추가하여 즐겨찾기 리소스에 사용할 수 있습니다(JaneXQ에서 이미 언급한 대로).
.antMatchers("/static/favicon.ico").permitAll()
  1. HTML에서 사용자 지정 즐겨찾기에 대한 링크를 명시적으로 사용합니다.그러기 위해서는 다음 링크를 입력하면 됩니다.<head>다음과 같은 방법으로 당신의 HTML 페이지의 섹션을 작성합니다(여기서는 타임리프를 사용했습니다).
<head>
    ...
    <link rel="icon" type="image/ico" th:href="@{../static/favicon.ico}">
    ...
</head>

나는 내가 내 것을 놓아야 한다는 것을 발견했습니다.favicon.ico파일 위치:

src/main/resources/public

너의 것을 둬라.favicon.png아래src/main/resources/public그리고 이것을 당신의 것에 추가합니다.*.html페이지를 정확히header부분

 <link rel="shortcut icon" type="image/png" th:href="@{favicon.png}"/>

나는 간단한 .png 다운로드였던 내 favicon을 src/main/resources/static/favicon.ico로 저장했습니다.

다른 브라우저를 사용해 보기 전까지는 표시할 수 없습니다. 브라우저 캐시를 지우거나 다른 브라우저에서 테스트해 보십시오.

좋아요, 이제 작동하는 것 같습니다.물론 저는 그것에 대해 호통을 친 직후에 그것을 작동시킬 수 있었습니다 :).

어쨌든 제가 한 일은.

  1. 메인 클래스에서 @EnableWebMvc 제거
  2. URL에 따라 href에 ../를 추가한 경우(예: /index는 괜찮았지만 /edit/something.html은 그렇지 않았습니다.

사람들의 시간을 낭비해서 미안하지만 이것이 나와 같은 다른 신인에게 유용할 수 있기를 바랍니다.

th:href를 href로 바꾸세요.그것은 나에게 효과가 있었다.

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

어떤 이유로 .ico 형식이 작동하지 않았습니다.대신 png 이미지를 넣었더니 봄이 자동으로 favicon을 선택했습니다.

png 이미지를 \src\main\resources\public에 배치했습니다.

봄 부츠 + 백합잎

동일한 문제가 발생하여 @EnableAdminServer 주석을 제거하는 문제를 해결했습니다.

  • 스프링 부츠
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.0.6'
    id 'io.spring.dependency-management' version '1.1.0'
}

group = 'com.security.web'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
 <link rel="shortcut icon" type="image/x-icon" th:href="@{favicon.ico}"/>
  • src/main/main/static/staticon.ico

  • 춘계 경비

@EnableWebFluxSecurity
@Configuration
public class WebSecurityConfig {

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

    @Bean
    public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity httpSecurity) {
        return httpSecurity
                .formLogin().and()
                .httpBasic().disable()
                .authorizeExchange()
                .pathMatchers("/", "/login", "/signup").permitAll()
                .pathMatchers(HttpMethod.POST, "/api/users").permitAll()
                .pathMatchers("/favicon.ico").permitAll()
                .pathMatchers(HttpMethod.GET, "/api/users/**").hasRole("ADMIN")
                .anyExchange().authenticated()
                .and()
                .build();
    }
}

언급URL : https://stackoverflow.com/questions/46302090/spring-boot-custom-favicon-ico-not-showing

반응형