[Spring] redirect: 접두사는 항상 http로 리다이렉트 된다.
다음과 같은 코드가 있다고 하자.
@GetMapping("/completeGift")
public ModelAndView completeGift() {
return new ModelAndView("redirect:/");
}
사용자가 https://myservice.com/completeGift 페이지를 호출했다면 리다이렉트가 될 것이다.
우리가 예상하는 페이지는 당연히 https://myservice.com 가 될 것이다.
하지만 예상과는 다르게 http://myservice.com 페이지로 호출하게 된다.
차이점이 보이는가?
프로토콜이 달라지는 것을 알 수 있다. https 사이트에서 http 사이트로 페이지 리다이렉트 됐다.
우리는 대게 서비스를 오픈하게 되면 http://myservice.com 로 접속했을 때 https://myservice.com 페이지로 리다이렉트 해준다.
물론 안할수도 있겠다.
만약 이와같은 설정을 하지 않는다면 사용자에게는 페이지를 찾을 수 없습니다. 라는 메세지를 보여주게 되겠지....
여튼 http 로 접근하면 https 로 리다이렉트 해주세요. 라는 설정을 했다면 위의 상황이 어떻게 될까?
- https://myservice.com/completeGift 페이지 접속
- http://myservice.com 페이지로 리다이렉트
- 하지만 서버 설정으로 인해 https://myservice.com 페이지로 리다이렉트
위와같이 동작을 하게 된다.
즉, 라이브 서비스에서는 문제가 되지 않을수도 있지만 테스트망에서는 https -> http 로 프로토콜이 바뀌는 현상이 발생할 수 있으니 잘 알아두자.
만약 https -> http 로 바뀌지 않게 설정을 원한다면 다음과 같이 설정을 추가해 주면 된다.
spring boot 2.1 기준의 설정임을 참고
application.yml 파일에서 use-relative-redirects 설정을 true 로 바꿔주면 된다.
server:
port: 8080
tomcat:
max-threads: 500 # Maximum amount of worker threads.
min-spare-threads: 50 # Minimum amount of worker threads.
max-connections: 10000 # Maximum number of connections that the server will accept and process at any given time.
uri-encoding: UTF-8 # Character encoding to use to decode the URI.
use-relative-redirects: true
위의 설정을 추가해 준 후 테스트를 다시 해보면 다음과 같이 우리가 생각한대로 동작하게 될 것이다.
- https://myservice.com/completeGift 페이지 접속
- https://myservice.com 페이지로 리다이렉트
'프로그래밍' 카테고리의 다른 글
spring boot 정적 자원 versioning 에 대한 오해 (0) | 2019.10.16 |
---|---|
RestTemplate 사용시 URL 인코딩 이슈 (0) | 2019.10.04 |
[spring boot 2.1] 애노테이션 정리 (0) | 2019.08.05 |
티스토리 API 연동 (1) | 2018.09.18 |
SCP command 프로그램 (0) | 2018.05.17 |
3. Spring Cloud를 이용한 MSA 구축하기 - config client (0) | 2018.05.15 |
linux 장비 원격 실행 프로그램 (0) | 2018.05.08 |
spring boot swagger2 사용하기 (0) | 2018.02.01 |