본문 바로가기

오류

[Tomcat] 톰캣 400오류 - get방식으로 페이지 이동 시 발생하는 오류, 유효하지 않은 문자 발견

상황 - get방식으로 값을 전달하여 페이지 이동처리 중 발생

 

오류내용 

java.lang.IllegalArgumentException:

요청 타겟에서 유효하지 않은 문자가 발견되었습니다. 

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

 

원인 / 해결방안 1 

 

EL태그 상에 $가 빠져있어서 중괄호가 주소값으로 전달되어 발생하였다.

$를 붙여주면 정상적으로 처리된다.

 

원인 / 해결방안 2 

tomcat은 따로 설정하지 않으면 특수문자 또는 한글 인코딩이 되지 않기 때문에

주소값에 특수문자 [ ] { } ( ) ^ | " ; 가 들어갈 경우 오류가 발생한다고 한다.

특수문자를 허용하도록 설정하자.

 

 

C:\Program Files\Apache Software Foundation\Tomcat\conf 에 위치한 server.xml 파일을 열어서 수정한다.

또는 eclipse, sts의 server에서 수정이 가능하다.

1
2
3
4
<Connector port="80" protocol="HTTP/1.1" 
connectionTimeout="20000"  
redirectPort="8443" 
relaxedQueryChars="[]{}()^|&quot;"/>
cs

 

 

Connector 에 위와같이 relaxedQueryChars="[]{}()^|&quot;" 을 추가해주면 해결

 

문제의 원인이 EL문제였으므로 정상적인 페이지 이동이 되지 않지만,

유효하지 않은 문자에 따른 문제는 해결되었다.