HTTP 응답 상태 코드
HTTP 응답 상태 코드는 클라이언트에서 서버에게 어떠한 요청을 보냈을 때,
그 요청에 대한 서버의 응답이 어떤 식으로 동작했는 지에 대한 정보를 숫자 코드 3자리로 보여주는 것 입니다.
클라이언트는 응답 코드를 확인하여 웹 브라우저, 애플리케이션을 통해 적절한 동작을 수행합니다.
이 응답 코드는 5개의 그룹으로 나누어집니다.
1. 1XX : 100번대 - 정보 제공
2. 2XX : 200번대 - 성공
3. 3XX : 300번대 - 리다이렉션
4. 4XX : 400번대 - 클라이언트 에러
5. 5XX : 500번대 - 서버 에러
이러한 상태 코드는 RFC 2616 (HTTP 1.1)에 정의되어 있습니다.
1XX (100번대) : Informational 정보 전달
- 100 (Continue) : 클라이언트가 요청을 계속 진행해도 된다는 의미로, 주로 POST 요청 시 사용됩니다.
- 101 (Switching Protocols) : 클라이언트 요청에 따라 프로토콜 변경이 필요한 경우 사용됩니다.
100번대 응답 코드는 현업에서는 거의 사용하지 않기 때문에 대충 알고만 계시면 좋을 것 같습니다.
2XX (200번대) : Successful 성공
- 200 (OK) : 요청이 성공적으로 처리되었음을 나타냅니다.
- 201 (Created) : 요청이 성공적으로 처리되어 새로운 리소스가 생성되었음을 나타냅니다.
- 202 (Accepted) : 요청을 수신하였지만, 그에 응하여 행동할 수 없음을 나타냅니다. (비동기 처리, 배치 프로세스등에 사용)
- 204 (No Content) : 요청은 성공했지만 응답 본문에 컨텐츠가 없음을 나타냅니다.
3XX (300번대) : Redirection 리다이렉션
리다이렉션이란, 클라이언트의 요청이 서버에게 성공적으로 전달됐으며, 해당 요청이 성공했을 때 클라이언트를 특정한 위치로 이동시키는 것을 말합니다. (ex : 상품 주문을 완료했을 시, 주문 내역 확인 페이지로 이동하는 것)
- 301 (Moved Permanetly) : 요청한 리소스가 새로운 URL로 영구적으로 이동한 경우 사용됩니다. 리다이렉트 시 요청 메소드를 GET으로 변환하고 메세지 Body가 제거될 수 있습니다.
- 308 (Permanent Redirect) : 위와 같은 기능을 나타내지만, 리다이렉트 시 메소드를 유지하며 (POST라면 POST로 유지) 메세지 Body 또한 유지합니다.
- 302 (Found) : 요청한 리소스가 새로운 URL로 일시적으로 이동한 경우 사용됩니다. 리다이렉트 시 요청 메소드를 GET으로 변환하고 메세지 Body가 제거될 수 있습니다.
- 307 (Temporary Redirect) : 위와 같은 기능을 나타내지만, 리다이렉트 시 메소드를 유지하며 (POST라면 POST로 유지) 메세지 Body 또한 유지합니다. 301과 308과 같은 개념이지만 영구적, 일시적 차이라고 말할 수 있습니다.
- 303 (See Other) : 302와 동일하지만 리다이렉트 시 요청 메소드를 반드시 GET으로 변환해야합니다.
- 304 (Not Modified) : 리소스의 변경 사항이 없기 때문에 클라이언트의 캐시가 아직 유효하단 것을 나타냅니다.
영구적 리다이렉션과 일시적 리다이렉션?
301, 308의 영구적 리다이렉션이란 어떤 URI (example.com)이 영구적으로 새로운 URI(example-new.com)로 변경되었음을 뜻합니다. 브라우저 또는 클라이언트는 이후에 같은 URI로 요청을 보낼 때 마다 자동으로 새로운 URI로 리다이렉트됩니다.
주로 웹 사이트의 구조가 변경되었을 때, 이전 URL을 새 URL로 연결하는 데 사용된다고 합니다.
302, 308의 일시적 리다이렉션이란 클라이언트에게 리소스가 일시적으로 다른 위치로 이동되었음을 알리는 데 사용됩니다.
예를 들어, 로그인을 위해 로그인 페이지로 이동했다가 다시 원래 페이지로 돌아가는 데 사용된다고 합니다.
4XX (400번대) : Client Error 클라이언트 오류
- 400 (Bad Request) : 클라이언트의 요청이 잘못되었음을 나타냅니다.
- 401 (Unauthorized) : 클라이언트가 인증되지 않았거나 인증 정보가 유효하지 않음을 나타냅니다.
- 403 (Forbidden) : 클라이언트의 인증 정보는 유효하나, 해당 리소스에 접근할 권한이 없음을 나타냅니다.
- 404 (Not Found) : 요청한 리소스를 서버에서 찾을 수 없음을 나타냅니다.
5XX (500번대) : Server Error 서버 오류
- 500 (Internal Server Error) : 서버에서 처리 중에 오류가 발생했음을 나타냅니다.
- 502 (Bad Gateway) : 게이트웨이 서버가 다른 서버로부터 잘못된 응답을 받았음을 나타냅니다.
- 503 (Service Unavailable) : 서버가 일시적으로 요청을 처리할 수 없음을 나타냅니다.
자주 있는 일은 아니겠지만, 만약 응답 코드가 RFC 2616에 정의되지 않은 형태로 온다면
클라이언트에서는 상위 코드를 전달합니다.
예) 응답 코드가 299번으로 온다면 200을 전달합니다.
'WEB > HTTP' 카테고리의 다른 글
HTTP Methods (0) | 2023.10.01 |
---|---|
HTTP 메시지 (0) | 2023.09.30 |
URL (0) | 2023.09.29 |