반응형
[Tomcat 에러] 요청 타겟에서 유효하지 않은 문자가 발견되었습니다. 유효한 문자들은 RFC 7230과 RFC 3986에 정의되어 있습니다. (java.lang.IllegalArgumentException) 에러 해결방법
2월 08, 2022 8:48:43 오전 org.apache.coyote.http11.AbstractHttp11Processor process
정보: HTTP 요청 헤더를 파싱하는 중 오류 발생
비고: HTTP 요청 파싱 오류들이 더 발생하는 경우 DEBUG 레벨 로그로 기록될 것입니다.
java.lang.IllegalArgumentException: 요청 타겟에서 유효하지 않은 문자가 발견되었습니다. 유효한 문자들은 RFC 7230과 RFC 3986에 정의되어 있습니다.
at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:213)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1108)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:319)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
✔ 원인
유효하지않은 문자(특수문자나 한글같은..?)가 쿼리스트링으로 포함된 URI로 요청시에 나는 톰캣 에러
✔ 해결방법
1. 톰캣 Server.xml의 Connector에 relaxedQueryChars를 추가한다 (원하는 특수문자 다 추가)
<Connector connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
relaxedQueryChars="[,]()^"
/>
2. 요청보내는곳에서 encoding 처리해서 보내기
예를 들면 javascript에서는 param을 보낼 때, encodeURI(param) 처리를 해서 보내면 된다
(아래글에서도 인코딩처리때문에 에러가 났었다)
https://aroundlena.tistory.com/21
반응형