![[AWS] Request method 'GET' is not supported [AWS] Request method 'GET' is not supported](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
에러 상황
AWS 서버에 SSL 인증서를 적용하고 기존 http 호출 시 https를 리디렉션하도록 설정했다.
하지만 기존 http API 호출 시 에러가 발생했다.
에러 코드
Request method 'GET' is not supported
해결 방법
301 상태 코드 vs 302 상태 코드
위 에러 메시지를 이해하기 위해서는 301 상태 코드와 302 상태 코드가 무엇인지부터 알아야했다.
HTTP 상태 코드가 두 코드와 같을 때 클라이언트를 지정된 URL로 리디렉션해준다.
301 리디렉션은 영구 리디렉션, 302 리디렉션은 일시 리디렉션이라고 부른다.
301 리디렉션은 위에서 언급했듯 영구적으로 페이지가 삭제됐음을 의미한다.
302 리디렉션은 임시로 페이지가 삭제되거나 이전됐지만, 언제든지 이전 URL로 돌아올 수 있음을 의미한다.
이 둘을 구분하는 것은 사람이 아닌 검색 엔진과 검색 봇이다.
위 코드를 구분해서 사용하는 이유는 검색 엔진 최적화나 SEO에 영향을 주기 때문이다.
두 상태 코드를 구분하지 않을 경우 웹 페이지 랭크에 영향을 끼치게 돼서 링크가 보유했던 점수에 영향을 끼치게 된다.
더 자세한 내용은 본문 맨 아래의 참고 사이트를 확인하면 된다.
AWS의 HTTP 리디렉션
AWS의 HTTP 리디렉션 시 상태 코드를 301 또는 302로 설정할 수 있다.
![[AWS] Request method 'GET' is not supported - 해결 방법 - AWS의 HTTP 리디렉션 [AWS] Request method 'GET' is not supported - 해결 방법 - AWS의 HTTP 리디렉션](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
하지만 301 또는 302 상태 코드는 GET 또는 HEAD 이외의 요청에 대해서 사용자가 요청 조건을 변경 할 수 있기에
사용자를 확인할 수 없는 경우 리디렉션 된 요청에서 메서드를 변경할 수 없도록 지정한다는 RFC2616 HTTP 스펙이 있다.
HTTP/1.1: Status Code Definitions
part of Hypertext Transfer Protocol -- HTTP/1.1 RFC 2616 Fielding, et al. 10 Status Code Definitions Each Status-Code is described below, including a description of which method(s) it can follow and any metainformation required in the response. 10.1 Inform...
www.w3.org
쉽게 말하자면 HTTP POST 요청을 HTTPS로 리다이렉션하는 것은 리다이렉션이 발생할 때 헤더와 게시물 본문이
이미 암호화되지 않은 상태로 인터넷을 통해 전송 되었기 때문에 의미가 없는 행동이라는 말이다.
Redirection of HTTP to HTTPS in the AWS Application Load Balancer converts POST requests to GET requests
I use an Application Load Balancer in AWS as an API Gateway: for forwarding requests to different applications running in AWS. I have configured it with both support for HTTP and HTTPS. A HTTPS lis......
stackoverflow.com
동일한 HTTP 메소드로 리디렉션
그럼에도 동일한 HTTP 메소드로 요청하는 방법은 307 상태 코드를 사용하는 방법이다.
하지만 대부분의 웹 사이트들이 307 대신 302 상태 코드를 사용하고 있다.
그 이유는 최신 브라우저에서만 307 HTTP 상태 코드를 처리할 수 있기 때문이다.
그런 이유에서 인지 현재 AWS에서도 307 상태 코드를 지원해주지는 않고 있다.
그래서 해결 방법이 뭔데?
결론적으로 말하자면 HTTP 요청 시 리디렉션을 하는 방식이 아닌 고정 응답으로 에러 메시지를 반환하는 방법으로 변경했다.
![[AWS] Request method 'GET' is not supported - 해결 방법 - 그래서 해결 방법이 뭔데? [AWS] Request method 'GET' is not supported - 해결 방법 - 그래서 해결 방법이 뭔데?](https://blog.kakaocdn.net/dn/EaWzW/btsL6pFJ4AY/8Xy5MKXJ76tsi4f3G25hS1/img.png)
리디렉션이 아닌 고정 응답 방식으로 변경하게된 이유는 크게 2가지 있었다.
첫 번째 이유는 AWS에서 307 상태 코드를 지원해주지 않는 이상 POST로 설정한 메소드를 호출할 수 없기 때문이다.
두 번째 이유는 아직 정식적으로 배포된 어플리케이션이 아니기 때문에 굳이 HTTP 호출을 사용할 필요가 없었다.
만약 이미 배포된 어플리케이션이라면 다른 방법을 생각해봐야 할 것이다.
참고 사이트
https://wwlee94.github.io/category/blog/http-post-redirect-to-get/
왜 리다이렉트시 HTTP 메소드들은 GET 메서드로 리다이렉션 될까?
개요 최근 저는 루비콘 멘토링 프로젝트 라는 곳에서 2기 멘토링에 참여하여 프로젝트를 진행하고 있습니다 ! 프로젝트는 기반으로 API…...
wwlee94.github.io
🌐 301 vs 302 상태 코드 차이점 (SEO)
301 vs 302 Redirection 리다이렉션(Redirection)은 보통 웹사이트를 새로운 도메인으로 옮겼거나 페이지의 주소가 바뀌없을때, 이용자들을 하여금 변경된 주소로 자동으로 옮겨가게 만드는데 사용된다....
inpa.tistory.com
'🗄️AWS > AWS' 카테고리의 다른 글
[AWS] Failed to validate connection (0) | 2025.02.18 |
---|---|
[AWS] Data source rejected establishment of connection, message from server: "Too many connections" (0) | 2025.02.17 |
[AWS] 가비아 SSL 인증서로 AWS HTTPS 등록하기 (0) | 2025.02.03 |
[AWS] Windows에서 jar파일을 AWS 서버에 배포하기 - (2) Dockerfile을 이용한 AWS 배포 (1) | 2024.04.19 |
[AWS] Windows에서 jar파일을 AWS 서버에 배포하기 - (1) 배포를 위한 기본 세팅 (1) | 2024.04.19 |
댓글