브라우저 url '#'에 관하여..

Sunki-Kim·2026년 2월 20일

web

목록 보기
1/1

사내 프로젝트중에 파일을 불러오는 케이스가 있었는데,
파일명에 #이 들어간 파일을 불러오지 못하고 404를 뱉어냈던 케이스가 있었다.
처음에는 파일 자체 문제인줄 알았는데 나중에 알고보니 웹 브라우저 특성상 #이 URL에서 인식하는 부분이 다르게 받아들인다는걸 알게되어 작성해두려한다.

브라우저 url에 간혹 #이 들어가는 케이스가 있는데, 이는 fragment identifier (프레그먼트 식별자) 역할을 하고 클라이언트 내부에서 사용하는 정보로 인식을 한다.

서버측에서 url을 분석해 데이터를 가져오려 할때 뒤에 내용을 읽을수 없다.

예를들어서 my#project/index.html 이라고 가정하면
my 까지만 인식하고, 뒤에는 클라이언트 내부에서만 사용하는 정보로 인식하여, 본래 경로를 읽을수 없어 404 에러가 났다.

#을 사용하는 경우가 프론트엔드 프레임워크에서도 해당하는 부분이 있는데,
HashMode를 사용하면 (/#/home) 루트뒤에 경로는 자바스크립트가 처리하게 설정이 되는 경우도 있다.


만약 #을 사용하고 싶고, 이를 해결하려면 어떻게 해야할까?

직접적으로 파일명을 바꾸지 않고 해결하는 방법은
URL 인코딩을 사용해서 , 인코딩된 문자열인 %23으로 바꿔 요청을 진행하면 된다.

profile
당신에게 가치있는 Developer가 되고자

0개의 댓글