Dev_Log

[Tomcat] 유효한 문자들은 RFC 7230과 RFC 3986에 정의되어 있습니다.

LeeDaniel 2021. 4. 12. 15:16
java.lang.IllegalArgumentException:
요청 타겟에서 유효하지 않은 문자가 발견되었습니다.

유효한 문자들은 RFC 7230과 RFC 3986에 정의되어 있습니다.

✔ Solution
톰캣 server.xmlConnector
relaxedQueryChars="[]()^|""를 추가해준다

<Connector connectionTimeout="20000"
  port="8080"
  protocol="HTTP/1.1"
  redirectPort="8443"
  relaxedQueryChars="[]()^|&quot;"/>

✔ 위 내용을 적용했을때 크롬에선 되지만 IE에서 안되는 경우가 발생
다른 브라우저는 잘만되는데 IE는 외않됀데? IE는 한글이나 특수문자를 인코딩 해주지 않는다고 한다. 그만좀쓰자.
✔ Solution
현재 작성된 코드는
view단에서 GET방식으로 파일명을 전달하고 있다
구글링 결과

Query String에 [],.;(특수문자) 또는 한글이 포함되면 발생하는 에러라고 하는데
다른 브라우저들은 인코딩처리를 해주지만
IE에서는 인코딩 처리를 안해준다
고 한다

그러므로 GET방식으로 요청하기전,
view단에서 URI를

JS의 encodeURI() 함수를 이용해서 인코딩 처리를 한뒤 전달하도록 한다
encodeURI() 함수는 아래사이트를 참고하자

 

 

encodeURI() - JavaScript | MDN

encodeURI() The encodeURI() function encodes a URI by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character (will only be four escape sequences for characters composed of

developer.mozilla.org

 

728x90
반응형