ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (SpringBoot) js,css 등 정적파일에 ERR_ABORTED 404 가 발생하는 경우
    IT/Web 2019. 9. 23. 18:10

    #개요

    SpringBoot에서 html 내에 js , css 파일을 아래와 같이 불러오는 불러오는 경우.....

    <link rel="stylesheet" type="text/css" href="/resource/css/user.css" />
    <script src="/resource/js/user.js" ></script>

     

    개발자도구 콘솔에 이러한 net:ERR_ABORTED 404 라는 에러가 우리를 반기는 경우가 있다.

     

    컨트롤러와 뷰의 구조를 잘 아는사람이야 한번에 딱!딱! 해결하겠지만 보통의 뉴비들은

    어? 파일 경로를 입력해줬는데 저게 저렇게 http://서버/ 뒤에 URL경로로 붙으면 안되는데??

    라고 당황하기 마련이다.

     

     

     

     

     

     


    #원인

    결론만 간단히 말하자면 프레임워크(Spring / SpringBoot...)에는 위 css와 js같은 정적리소스파일의 경로는 /resource/가 default로 설정되어 있다.

    고로 /resource/js/user.js 라고 입력하면 /resource/resource/js/user.js 로 찾아가는 꼴이니 파일을 찾을수가 없는것이다.

     

     

     

     


    #해결방법

    resource가 기본경로로 포함되어있다고 생각하고 /js/user.js 만 입력할 경우 404가 발생하지 않고 제대로 파일에 접근한다.

    css도 마찬가지, /resource/ 를 제외하고 /css/user.css 만 입력할 경우 제대로 파일에 접근할것이다.

     

     

     

     

     

     

     

     


    #세부정보

    이러한 정적자원은 Spring의 경우 기본적으로 포함된 web.xml 파일에서 리소스의 기본경로를 확인할 수 있다.

    또한 경우에 따라 커스텀도 가능하다.

    Spring에서의 정적 리소스 경로에 대한 문제는 아래의 포스팅을 참고

    https://leegaworld.tistory.com/360

     

    SpringBoot의 경우

    org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration 라는 기본 SpringBoot 내장라이브러리에

    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
    			"classpath:/META-INF/resources/", "classpath:/resources/",
    			"classpath:/static/", "classpath:/public/" };

    라고 클래스패스classpath 상에서 /META-INF/resources/, /resources, /static, /public 경로를 기본탐색한다.

    이 경로도 WebMvcAutoConfiguration를 상속받은 WebConfig파일을 만들어서 커스텀이 가능하다.

     

    그러나 가급적 고객의 요구사항 및 특별한 경우가 있지 않고서는 권장되는 default 경로를 사용하는것을 추천한다.

     

    심플이즈베스트다.

     

     

     

     

     

     

    댓글

다치지 말고 운동하자.