인프런 커뮤니티 질문&답변

한글영문대소문자님의 프로필 이미지

작성한 질문수

AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)

Https 적용하고 http redirect 시켜주기

308 status code

해결된 질문

작성

·

452

·

수정됨

1

안녕하세요.

 

백그라운드를 먼저 소개해드리자면,

강사님께서 설명해주셨듯 http -> https로 리다이렉션을 시킬 때, 301 status code를 내뱉도록 만들었습니다.

 

테스트하다가 알게 됐는데,

GET 메서드의 경우에는 잘 리다이렉션되지만, POST PUT 메서드의 경우 GET 메서드로 바뀐채 리다이렉션되더라고요.

 

rfc 문서에서는 아래와 같이 설명하고 있습니다.
| Note: For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead.

 

이에 따라 http -> https로 리다이렉션을 시킬 때 POSTPUT 인 경우 308 status code를 주려고 했으나, aws 공식문서에는 이를 지원하고 있지 않더라고요.

참고 : https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#redirect-actions

보안 그룹에서 http에 대한 요청 자체를 막는것도 하나의 방법이 될거 같긴한데, 강사님께서는 어떻게 해결하실지 궁금해서 질문 남겨봅니다.

답변 1

1

김시훈님의 프로필 이미지
김시훈
지식공유자

오 예리한 질문이십니다!

 

테스트해보신대로 GET이 아닌 다른 method인 경우 redirect 했을 때 GET으로 변형됩니다. 그래서 http로 POST를 날리면 오류가 나게 되죠. 하지만 이건 문제가 되지 않아요. 우선 GET 외의 요청들은 프론트엔드 개발자 혹은 API를 소모하는 client(개발자)가 사용하게 되는데요. API 명세서에 명확하게 URL이 제공되죠. 즉, 실수로 http로 POST/PUT/DELETE 같은 메서드를 날리지 않습니다.

 

GET은 그러면 왜 http를 https로 redirect 할까요. 웹 브라우저에서 개발자가 아닌 일반 유저가 주소를 입력하고 보통 이때 http/https를 같이 입력하지 않죠. 유저가 기억하기 쉬운 도메인만 입력을 하죠. 그래서 이 경우에는 redirect를 해줘야 합니다. 유저가 실수로 http에 접근하는 경우가 많을텐데 이 때마다 오류를 보여주면 매우 불편하니깐요.

 

물론 307혹은 찾아보신 308 redirect도 있긴 하지만 지원 되지 않는 경우가 많습니다. 위에 설명한 이유로 그렇게 필수적이지 않기도 하고요