| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- tomcat튜닝
- 존폴결혼예물
- 한글 특수문자 자바스크립트
- spring unit test
- 비개인화추천모델
- set-cookie 안만들어짐
- steam game score
- jsp permission denied
- jsp 예외 permission
- 분산파일시스템
- 외부 톰캣 특수문자 깨질 때
- 자바스크립트 깨질 때
- 스프링단위테스트방법
- jqx워터마크제거
- 추천시스템steam
- integrationtest
- 동시 요청 처리
- staem algorithm
- cookie refreshToke
- 존폴반지
- Akamai 연구결과
- jqxWidget워터마크
- 존폴결혼반지
- dialtimeout
- dial timeout
- 스팀 게임 스코어 알고리즘
- LLM기반CBF
- 존폴쥬얼리
- 분산파일
- LLM기반 콘텐츠 추천
- Today
- Total
hola 개발
외부 톰캣 war 파일 실행 시 자바스크립트의 한글, 특수 문자 등이 깨질 때 본문
작업이 끝나서 war 파일 서버에 배포할 일만 남았었습니다.
현재 제가 쓰는 IDE의 이클립스에 등록한 외부 톰캣을 등록해놨고, 서버에도 같은 버전의 톰캣이 설치되어 있었습니다.
이제 war만 서버에 배포하면 되겠다 싶지만, 혹시나 해서 로컬에 있는 다른 톰캣에서 war 파일을 실행해봤습니다.
역시!! 문제가 생겼습니다.
특정 자바스크립트 파일의 특정 문자들이 깨져 브라우져에서 화면이 제대로 보이지 않는다는 것입니다.
[ 문제의 원인과 해결 방법 ]
- 문제
엇..? 이클립스에서 실행할 때는 문제가 없었는데 말입니다..
그래서 브라우져의 콘솔 창을 보니 특정 파일을 전송 받지 못하고 있음을 파악했습니다.
link 태그로 전송이 되어야 하는데 전송이 안되는데 확인해보니 전송할 URL에 특수문자가 포함되어 있었습니다.
찾아보니 HTTP URL의 쿼리 문자열(?key=value)에는 RFC 7230 등의 규약상 사용할 수 없는 문자가 있습니다.
톰캣은 기본적으로 이러한 "위험하거나 표준에 위배된 문자"를 차단하고 400 오류를 발생시킨다고 합니다.
- 해결 방법
relaxedQueryChars 를 사용해서 해결 했습니다.
relaxedQueryChars란 톰캣이 기본적으로 허용하지 않는 특수 문자 중에서, 개발자가 특정 문자를 예외적으로 허용하도록 지정 할 수 있는 설정입니다.
저의 경우 톰캣 config/server.xml에서 <Connector> 태그에 relaxedQueryChars="[]{}|^|"" 추가하였습니다.
주의할 점은 톰캣 8.5.31 이상, 9.x 이상에서 적용 가능하며 너무 많은 문자를 허용하면 보안 취약점에 노출 위험이 있다는 것입니다.
- 문제
sever.xml을 수정 후 다시 실행해보니 URL문제는 해결되었으나, 여전히 한글 등 특수 문자가 깨져 있었습니다...
그래서 흠... 인코딩의 문제인 것 같아서 찾아보니
, Windows CMD에서 톰캣을 실행하면 JVM의 기본 인코딩이 MS949 또는 EUC-KR일 수 있고, 이 상태에서 UTF-8로 저장된 JS 파일을 읽으면 한글이나 특수문자가 깨져 보인다고 합니다.
- 해결 방법
bin에 새로운 텍스트 파일을 생성합니다.
생성한 텍스트 파일에 아래의 내용을 작성 후 저장합니다.
@echo off
set JAVA_OPTS=-Dfile.encoding=UTF-8
저장된 텍스트 파일을 setenv.bat 으로 변경합니다. (확장자까지 변경 하면 됩니다)
이렇게 하고 톰캣을 재시작하니 이제 정상적으로 작동하게 되었습니다.
[ 정리 ]
오늘 느낀 점은 원인을 파악하고 역추적하는 방법이 중요함을 느꼈습니다. console 창에서 나타나는 문제를 파악하고 그 문제로부터 원인을 곰곰히 생각하고 하나씩 풀어나가는 방법을 배웠습니다.
'회고록 > 문제 해결' 카테고리의 다른 글
| [ 문제 해결 ] 대용량 데이터 요청 개선기 (0) | 2026.02.25 |
|---|---|
| [ 문제 해결 ]Set-cookie 가 있는데 브라우저 application 탭에 쿠키가 만들어지지 않을 때 (https 사용 없이 http로만 하는 방법) (0) | 2025.11.18 |
| [ 문제 해결 ] jsp에서 Permission denied 발생했을 때 (0) | 2025.09.19 |
| [ 문제 해결 ] jqxWidget 워터마크 제거 방법 (1) | 2025.08.13 |