티스토리 뷰

728x90

#url 의 #쿼리스트링 에 다음과 같은 문자는 허용되지 않는데, 만약 <>[\\]^`{|} 같은 문자가 쿼리스트링에 들어가는 경우 #tomcat 자체의 에러가 떨어진다.

쿼리스트링에 ] 포함

서버 콘솔에는 이런 에러가 나온다.

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

#Tomcat8.0 부터 #RFC3986 규격이 적용되어 영어문자, 숫자, 몇개의 예약 문자만 허용된다.

따라서 '[' 같은 특수문자를 허용하려면, 톰캣 버전을 다운그레이드 시키던지, 허용 문자를 별도로 추가해주면 된다.

 

import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Configuration;

@Configuration
public class EmbeddedTomcatConfig implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        factory.addConnectorCustomizers((TomcatConnectorCustomizer)
                connector -> connector.setAttribute("relaxedQueryChars", "<>[\\]^`{|}"));
    }

}

아래와 같은 설정을 추가해주면 에러 메세지가 다음과 같이 바뀌고, 내가 정의한 에러 페이지로 이동하게 된다.

 

Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: "1]"

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함