Illie

HTTP. 상태코드 본문

CS

HTTP. 상태코드

(*ᴗ͈ˬᴗ͈)ꕤ*.゚ 2023. 2. 5. 18:09

1. 정의

클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능

- 1xx (Informational): 요청이 수신되어 처리 중

- 2xx (Successful): 요청 정상 처리

- 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요

- 4xx (Client Error): 클라이언트 오류, 서버가 요청을 수행할 수 없음

- 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함

2. 2xx (Succssful)

- 200 OK

 

- 201 Created

    - 요청 성공해서 새로운 리소스가 생성됨

    - 생성된 리로스는 응답의 Location 헤더 필드로 식별

 

- 202 Accepted

    - 요청이 접수되었으나 처리가 완료되지 않았음

    - 배치 처리 같은 곳에서 사용 (ex. 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리함)

 

- 204 No Content

    - 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음

 

3. 3xx (Redirection)

요청을 완료하려면 추가 행동이 필요

ex) 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동 (리다이렉트)

 

- 영구 리다이렉션

    - 특정 리소스의 URI가 영구적으로 이동

 

- 일시 리다이렉션

    - 일시적인 변경

    - 주문완료 후 주문 내역 화면으로 이동

    - PRG: Post/Redirect/Get

 

- 특수 리다이렉션

    - 결과 대신 캐시 사용

4. 301 Moved Permanently

- 영구 리다이렉션

- 리다이렉트 시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY)

<예시>
1. 요청
POST /event HTTP/1.1
Host: localhost:8080
name=hello&age=20

2. 응답
HTTP/1.1 301 Moved Permanently
Location: /new-event

3. 자동 리다이렉트

4. 요청
GET /event HTTP/1.1
Host: localhost:8080

5. 응답
HTTP/1.1 200 OK
...

5. 308 Permanent Redirect

- 영구 리다이렉션

- 리다이렉트 시 요청 메서드와 본문 유지

<예시>
1. 요청 
POST /event HTTP/1.1
Host: localhost:8080
name=hello&age=20

2. 응답
HTTP/1.1 308 Permanent Redirect
Location: /new-event

3. 자동 리다이렉트

4. 요청
POST /event HTTP/1.1
Host: localhost:8080
name=hello&age=20


5. 응답
HTTP/1.1 200 OK
...

6. 일시적인 리다이렉션 (302, 307, 303)

- 302 Found

    - 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음 (MAY)

 

- 307 Temporary Redirect

    - 리다이렉트 시 요청 메서드와 본문 유지

 

- 303 See Other

    - 리다이렉트 시 요청 메서드가 GET으로 변경

7. PRG: Post/Redirect/Get

POST로 주문 후에 웹 브라우저를 새고로침하면 다시 요청 -> 중복 주문될 수 있음

-> POST로 주문 후에 주문 결과 화면을 GET 메서드로 리다이렉트하면 새로고침해도 결과 화면을 GET으로 조회

8. 304 Not Modified

캐시를 목적으로 사용

서버는 클라에 리소스가 수정되지 않았음을 알려주고, 클라는 저장된 캐시 사용

9. 4xx (Client Error)

- 400 Bad Request

    - 클라가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음

 

- 401 Unauthorized

    - 클라가 해당 리소스에 대한 인증이 필요함

 

- 403 Forbidden

    - 서버가 요청을 이해했지만 승인을 거부

    - 인증 자격 증명은 있지만, 접근 권한이 불충분한 경우

 

- 404 Not Found

    - 요청 리소스가 서버에 없음

    - 클라가 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기고 싶을 때

10. 5xx (Server Error)

- 500 Interal Server Error

    - 서버 내부 문제로 오류 발생

 

- 503 (Service Unavailable)

- 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없음

- Retry-After 헤더 필드로 얼마 뒤에 복구되는지 보낼 수도 있음

'CS' 카테고리의 다른 글

HTTP. 헤더와 캐시(완)  (0) 2023.02.05
HTTP. 메서드  (0) 2023.01.28
HTTP. 간단하게 정리1  (0) 2023.01.24
CS. 웹 브라우저에 URL을 입력하면 어떤 일이 생기나요?  (0) 2022.07.13
Comments