로컬에서 스프링부트로 개발을 진행하고 테스트가 완료된 파일들을 한 번에 올리는 방식으로 개발을 진행하였다.
로컬에서 테스트를 돌려보고 원하는 응답 결과를 받았다.
원하는 결과를 받았으므로 이 파일들을 서버에 올린 후 내 도메인으로 다시 테스트를 진행해보았다.
그랬더니 POST
로 보낸 요청이 GET
으로 변하는 걸 알 수 있었다.
/etc/nginx/sites-available/default
파일 내부에서 HTTPS 리다이렉션 설정 부분은 다음과 같았다.
301번 status code를 통해 리다이렉션을 보내도록 하고 있었다.
그런데 301번 status code는 GET
만을 인식하는 문제점이 있다.
301번 Moved Permanetly는 redirect시킬 때 method를 GET
으로 바꾸어서 전송한다.
반면, 308번 Permanent Redirect는 전송 받은 HTTP Method
를 유지한다.
따라서 301번을 사용한다면 HTTP 프로토콜을 통해POST로 날아왔던 요청이 HTTPS 프로토콜을 통해 GET 메소드로 변경되면서 컨트롤러나 라우터에 매핑되는 URI가 없으면 오류가 나게된다.
따라서 301 대신 308을 사용하면 더 안전하게 redirect시킬 수 있다.
https://
를 빠뜨리지 않고 붙여준다.