-
(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 경로를 사용하는것을 추천한다.
심플이즈베스트다.
'IT > Web' 카테고리의 다른 글
PHP 수정사항이 바로 적용안될때 : PHP 캐시 비활성화 (0) 2020.10.29 HTML,JSP 에서 한글이 깨짐 - 인코딩 설정 (3) 2019.08.04 input 태그에서 엔터(enter) 입력해도 submit 되지 않도록 하기 (0) 2019.08.04 localhost 또는 127.0.0.1 이란? (0) 2019.08.04 자바스크립트) 함수를 호출한 버튼(객체)의 id및 속성 알아내기 (0) 2019.07.17