728x90
이 글은 공부를 하면서 알게 된 내용들을 기록하는 글 입니다. 오류나 고쳐야 할 사항들이 있다면 지적 부탁드립니다!
✅ HTTP Location Header
HTTP Location 헤더는 HTTP 요청에 대한 응답 시, 헤더에 포함될 수 있으며 크게 두 가지 상황으로 나눌 수 있습니다.
1️⃣ 다른 웹 페이지로의 리다이렉트가 필요할 때
HTTP 상태 코드에서 300번대는 다른 웹 페이지로의 리다이렉트가 필요할 때 사용됩니다.
- 301 Moved Parmanently
요청한 리소스가 새로운 URI로 이동했으니 새로운 URI로 요청하라고 알려주는 응답 코드입니다.
`Location` 헤더에 새로운 URI를 명시되어 있습니다. - 303 See Other
다른 위치로 요청하라는 응답 코드입니다.
요청에 대한 처리 결과를 `Location 헤더에 표시된 URI에 GET 요청`을 함으로서 확인할 수 있습니다.
form 요청을 POST로 처리하고, 그에 대한 결과(result)는 다른 URI에서 보여주고자 할 때 주로 사용합니다. - 307 Temporary Redirect
임시로 리다이렉트 요청이 필요할 때 사용하는 응답 코드입니다.
요청한 URI가 현재 존재하지 않기 때문에, HTTP Method는 그대로 유지한 채 Location 헤더에 표시된 URI로 재요청할 필요가 있을 때 사용합니다.
`302 Found`의 개선된 버전으로서, 302보다 307을 사용하는 것을 권장하고 있습니다.
예시로 OAuth2를 이용한 소셜로그인을 살펴볼까요?
아래의 사진은 Github 소셜로그인을 도입한 프로젝트에서, 소셜로그인을 눌렀을 때 Github 페이지로 리다이렉트되는 요청 중 하나를 캡쳐한 사진입니다.
`Location` 헤더를 통해 어떤 URI로 리다이렉트해야 하는지 명시하고 있으며, 직후에 `Location` 헤더에 적혀있는 URI로 요청을 한 것을 확인할 수 있습니다.
2️⃣ 새롭게 생성된 리소스에 대한 정보 전달 시
300번대 외에 200번대에서도 `Location` 헤더가 사용됩니다.
200번대 성공 응답 코드들 중에서 `201 created`, `202 accepted`의 경우 `Location` 헤더가 사용되기도 합니다.
새로운 resource를 성공적으로 생성했을 때, 생성한 Resource에 접근할 수 있는 URI를 제공하고자할 때 사용합니다.
✅ 참고 자료 & 링크
728x90