728x90
스프링 부트2를 사용, Tomcat은 8.5.41 버전 사용하면서 개발중
localhost:8080/search/api/v1/items/store?keyword=강의&size=3&page=1&confirm=false&approve=true&area=1|2
위와 같은 형태로 요청을 보내니 '|' 이 문자를 인식하지 못해서 에러가 발생했다.
해당 에러를 수정하려면 아래 relaxQueryChars 옵션에 허용할 문자를 추가하거나 톰캣 버전을 다운그레이드 하거나,
위 요청을 javascript 의 encodeURI 함수를 통해 인코딩해서 보낼 수 있다면 위 문제는 발생하지 않는다.
아래는 스프링 부트에서 해당 옵션을 추가하는 예 이다.
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 TomcatWebServerConfig implements
WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.addConnectorCustomizers((TomcatConnectorCustomizer)
connector -> connector.setAttribute("relaxedQueryChars", "<>[\\]^`{|}"));
}
}
출처: http://jmlim.github.io/java/2019/10/14/characters-are-defined-in-rfc-7230-and-rfc-3986/
728x90
'Java 웹 프로그래밍' 카테고리의 다른 글
[백기선 온라인 스터디] 2주차 과제 (0) | 2021.01.27 |
---|---|
[백기선 온라인 스터디] 1주차 과제 - JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가 (0) | 2020.11.15 |
@QueryProjection 사용하여 DTO 조회시 query specified join fetching, but the owner of the fetched association was not present in the select list 에러 발생 (0) | 2020.08.18 |
cannot simultaneously fetch multiple bags (0) | 2020.08.14 |
[Spring] Controller 이외의 클래스에서 세션 값 사용하기 (0) | 2020.07.28 |