IT/Web

(SpringBoot) js,css 등 정적파일에 ERR_ABORTED 404 가 발생하는 경우

돔찌 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 경로를 사용하는것을 추천한다.

 

심플이즈베스트다.