에러

[Tomcat 에러] 요청 타겟에서 유효하지 않은 문자가 발견되었습니다. 유효한 문자들은 RFC 7230과 RFC 3986에 정의되어 있습니다. (java.lang.IllegalArgumentException) 에러 해결방법

뚜키 💻 2022. 2. 9. 09:35
반응형

[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

 

[에러] Error parsing HTTP request header 에러 해결 (java.lang.IllegalArgumentException: Invalid character found in the req

엑셀 다운 기능을 구현하다가 엑셀 다운 버튼을 누르면 404가 뜨는 오류가 났다. 크롬에서는 문제없이 되는데 익플에서만 404가 떴다. org.apache.coyote.http11.AbstractHttp11Processor process 정보: Error pa..

aroundlena.tistory.com

 

반응형