기존 apache 웹서버를 nginx 로 교체하는 작업 진행후
몇가지 버그사항이 발생했던 부분은 nginx 서버 셋팅으로 잡을 수 있었는데
이번 유효하지 않은 문자 오류는 서버 셋팅으로는 해결이 안되었어요
파일 다운로드 실패
파일 다운로드 링크 클릭 시 아래처럼 유효하지 않은 문자가 발견되었다고 합니다
get 방식으로 호출하는 부분인데 한글 파일명의 경우 처리실패로 나타나는 부분이었어요
요청 타겟에서 유효하지 않은 문자가 발견되었습니다. 유효한 문자들은 RFC 7230과 RFC 3986에 정의되어 있습니다.
아래 처럼 URIEncoding는 "UTF-8" 로 설정하고, relaxedQueryChars 는 "[]()^|"" 설정해서
Query String에 한글 또는 특수문자가 있을 시 제대로 처리해주도록 설정했지만
동일한 오류가 발생하기는 마찬가지였어요
<Connector connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
URIEncoding="UTF-8"
relaxedQueryChars="[]()^|""/>
encodeURIComponent 로 해결
결국 코드를 열어서 Uri Encoding 과 관련한 코드를 추가해주면서 해결을 보았습니다.
window.open 으로 여는 파일의 URL 에 대해 encodeURIComponent 함수로 감싸 주었으며
파일다운로드 진행 시 정상적으로 경로를 찾아가는 것을 확인했습니다.
동일한 nginx 웹서버의 proxy pass 를 통해 서로 다른 두개의 tomcat 인스턴스를 바라보도록 되어 있는데
하나의 서비스는 톰캣의 utf8 설정만으로 해결이 되었는데
다른 하나의 서비스는 encodeURIComponent 함수를 써야만 해결이 되었네요
명확한 해결책은 encodeURIComponent 라고 생각됩니다.