HTTP 상태 코드는 request가 성공적으로 완료되었는지 알려준다.
상태 코드
1xx: 정보 응답
100번대는 요청이 수신되어 처리중이라는 의미다.
100 Continue: 클라이언트의 요청을 받았으며 작업을 계속 진행중
101 Switching Protocol: 프로포콜을 전환라는 의미이며, response header에 응답이 들어간다.
102 procession(WebDAV): 요청을 수신하여 처리중
2xx: 성공 응답
요청이 정상 처리되었다.
200 OK: 요청 성공
201 Created: 요청에 성공해서 새로운 리소스가 생성 됨, response header의 Location에 생성된 리소스를 알려준다.
202 Accepted: 요청이 접수되었으나 처리가 완료되지 않았다.
204 No Content: 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없다.
205 Reset Content: 요청을 성공적으로 수행했고, 브라우저 화면을 리셋하라
206 Partial Content: 콘텐츠의 일부만 보냄. response header의 Content-Range에 응답 범위를 기록한다.
3xx: 리다이렉션 메시지
요청을 완료하려면 추가 행동이 필요하다.
웹 브라우저는 3xx 응답의 결과에 Location hearder가 있으면 Location 으로 자동 이동한다.
redirection의 흐름
- 클라이언트가 서버로 요청을 보낸다.
- 서버가 response header의 Location에 바뀐 경로를 보낸다.
- 클라이언트가 경로를 Location에 들어있는 경로로 이동 요청을 보낸다.
- 서버가 바뀐경로로 응답한다.
종류
- 영구 redirectiona: 리소스의 URI가 영구적으로 변경 (301, 308)
- 일시 redirection: 일시적으로 URI를 변경한다. ex) 주문 후 주문내역으로 일시적으로 페이지를 전환, PRG(Post.Redirect/Get) (302, 307, 303)
- 특수 redirection: 결과 대신에 캐쉬를 사용해라
300 Multiple Choices: 하나 이상의 응답이 가능한 상태이다.
301 Moved Permanently: URI가 영구적으로 변경, 요청 method가 GET으로 변경 될 수 있다(대부분)
302 Found: 일시적으로 URI가 변경, 요청 method가 GET으로 변경 될 수 있다(대부분)
303 See Other: 302와 기능은 같음, 하지만 redirect요청시 method가 GET으로 변경된다.
304 Not Modified: 캐시를 목적으로 사용, 클라이언트에게 리소스가 수정되지 않았읆을 알려준다. 따라서 클라이언트는 로컬CP
에 저장된 캐시를 재사용 한다. 캐시로 리다이렉트, 메시지 바디를 포함하면 안된다.
307 Temporary Redirect: 302와 기능은 같음, 하지만 method가 변경되서는 안된다. (POST으로 요청이 왔다면 redirection후에
도 POST이여야 한다.)
308 Permanent Redirect: 301과 의미는 동일, 하지만 method가 변경되서는 안된다. (POST으로 요청이 왔다면 redirection후에도 POST이여야 한다.)
PRG(POST Redirect GET)
클라이언트가 POST 요청을 보낸 후 페이지를 새로고침하면 똑같은 주문(POST)이 중복으로 발생하게 된다.
이것을 해결하기 위해서 PRG라는 방법을 사용한다.
PRG는 POST Redirect GET으로
POST후 303(302)의 상태코드를 보내고 페이지를 자동으로 GET 으로 리다이렉트 시켜 중복 주문(POST)을 방지한다.
4xx: 클라이언트 에러 응답
클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없을 때 사용한다.
[computer science/knowlege] - Authentication, Authorization
400 Bad Request: 클라이언트의 잘못된 요청(잘못된 문법)으로 서버가 요청을 이해할 수 없다.
401 Unauthorized: 클라이언트가 리소스에 대한 인증이 필요하다. 즉, 비인증(unauthenticated) 상태이다. response에 WWW-Authenticate header와 함께 인증 방법을 알려준다.
402 Payment Required: 디지털 결제 시스템에 사용하기 위해 만들어 졌지만 현재는 사용이 되지 않는다.
403 Forbidden: 클라이언트가 리소스에 접근할 권한이 없다. ( authenticated이지만 unauthorizated 상태이다)
404 Not Found: 요청 리소스를 찾을 수 없다, 또는 클라이언트가 권한이 부족한 리소스에 접근 하지만 해당 리소스를 숨기고 싶을
때 사용
405 Method Not Allowed: 요청한 메소드를 사용 할 수 없다. response header의 Alloew에 지원한느 메소드를 전달(GET, HEAD에는 사용금지)
406 Not Acceptable
407 Proxy Authentication Required: 401과 유사하며 프록시에 의한 인증이 필요하다.
408 Request Timeout: 요청 시간이 오래되어 서버에서 타임아웃했다.
409 Conflict: 요청이 서버 상태와 충돌 된다.
5xx: 서버 에러 응답
서버 오류, 서버가 정상 요청을 처리하지 못할 때 사용한다.
500 Internal Serval Error: 서버 내부 문제로 오류 발생, 처리방법을 아직 모르는 상황에 사용
501 Not Implemented: 요청한 URI의 메소드를 서버가 수행 할 수 없다.
502 Bad Gateway: 게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로 부터 잘못된 응답을 받았다.
503 Service Unavailable: 서버가 일시적으로 요청을 처리할 수 없다.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
https://hongong.hanbit.co.kr/http-%EC%83%81%ED%83%9C-%EC%BD%94%EB%93%9C-%ED%91%9C-1xx-5xx-%EC%A0%84%EC%B2%B4-%EC%9A%94%EC%95%BD-%EC%A0%95%EB%A6%AC/
'computer science > network' 카테고리의 다른 글
AWS - 기초 (0) | 2024.06.08 |
---|---|
HTTP Caching (0) | 2023.11.01 |
HTTP 데이터 전송 (0) | 2023.10.26 |
HTTP Method (0) | 2023.10.22 |
HTTP 메시지 (0) | 2023.10.20 |