본문 바로가기
spring/spring security

[spring security5] URL 더블슬래시 허용 - The request was rejected because the URL was not normalized.

by moonsiri 2020. 10. 14.
728x90
반응형

Spring security의 기본정책은 URL에 더블 슬래시가 들어가는 것을 허용하지 않습니다.

 

예를 들어 https://moonsiri.tistory.com/category와 같은 URL을 사용할 때, URL 더블 슬래시 처리가 안되어있는 상태에서 https://moonsiri.tistory.com//category로 요청이 들어오면 에러가 발생합니다.

org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL was not normalized.
	at org.springframework.security.web.firewall.StrictHttpFirewall.getFirewalledRequest(StrictHttpFirewall.java:296)

 

만약 더블 슬래시를 허용하고 싶다면 아래와 같이 HttpFirewall Bean을 등록해주면 됩니다.

@Bean
public HttpFirewall defaultHttpFirewall() {
    return new DefaultHttpFirewall();
}

 

 

+)

SpringBoot 2.6 버전부터는 URL 패턴 매칭 기본전략이 AntPathMatcher에서 PathPatternPaser로 변경되어 더블 슬래시를 제거하지 않고 URL 패턴 매칭을 하기 때문에 URL 매칭에 실패할 수 있습니다. 자세한 내용은 아래 포스팅을 참고해주세요.

 

 

Spring MVC의 PathPattern (AntPathMatcher, PathPatternParser)

spring boot 버전을 2.3.2.RELEASE(spring 5)에서 3.2.5(spring 6)로 버전업 하면서 double slash(//)가 포함된 경로를 찾을 수 없는 이슈가 발생하였습니다. (사실 오랫동안 버전업을 안 해서 이제야 발견한 거지만

moonsiri.tistory.com

 

 

[Reference]

https://stackoverflow.com/questions/48453980/spring-5-0-3-requestrejectedexception-the-request-was-rejected-because-the-url

728x90
반응형

댓글