로컬에서 SpringBoot로 구동하였을 때에는 이상이 없었는데..
Tomcat에 적용한 이후에 아래와 같은 에러가 발생했다.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
원인을 파악해 보니 URL 에 특수문자가 들어가서 에러난 것이다.
레거시 시스템에서 Get방식으로 바로 호출하는 것이 있기에..
우리쪽에서 수정을 해야했다.
호출하는쪽에서 encodeURI로 전체주소를 감싸서 넘겨줬으면 좋았을 것을...
Tomcat쪽에 직접 설정을 한다면 아래 경로에서 relaxedQueryChars을 추가해주면 된다
/tomcat/conf/server.xml
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
relaxedQueryChars="[\\]^`{|}"
/>
위에 설정만 해서는 해결되지 않았다..
부트쪽에 따로 설정을 해주어야하나....
결국 아래소스를 추가하여 해결하였다.
@Configuration
public class TomcatWebServerCustomizer
implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
/**
* 톰캣에 옵션 추가.
*
* @param factory
*/
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.addConnectorCustomizers((TomcatConnectorCustomizer)
connector -> connector.setAttribute("relaxedQueryChars", "<>[\\]^`{|}"));
}
}
최근댓글