java.lang.IllegalArgumentException: Invalid character found in the request target.

쓰리래빗츠 북은 아파치 톰캣을 사용합니다. 쓰리래빗츠 북 3.0.10 버전부터 다음 예외가 발생할 수 있습니다.

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

아파치 톰캣 8.0.39 버전부터 요청 URL 쿼리 문자열에 |과 같이 지원하지 않는 문자열을 사용했을 때 발생합니다. RFC 7230RFC 3986 문서에서 정의한 글자만을 지원합니다.

| 글자를 %7C로 바꾸면 정상적으로 동작합니다.

사용자에게 인코딩을 강제할 수 없기에 다음 순서로 아파치 톰캣 설정을 바꿔 해결할 수도 있습니다.

  1. 3RABBITZ_HOME/tomcat/conf/server.xml 파일을 엽니다.

  2. Connector 태그에 relaxedQueryChars 속성을 추가합니다. 속성 값으로 허용할 문자열을 정의합니다.

<Connector port="1975" protocol="HTTP/1.1" 
    connectionTimeout="20000" redirectPort="8443"
    URIEncoding="UTF-8" maxPostSize="-1" Server="3Rabbitz"
    relaxedQueryChars="^`\|{}[]" />
  1. 쓰리래빗츠 북을 다시 시작합니다.

쓰리래빗츠 북 3.0.34 버전부터 Connector 태그에 relaxedQueryChars 속성을 추가했습니다. 단 이전에 설치했다면 이를 직접 추가해야 합니다. 업데이트할 때 자동으로 추가하지 않습니다.