본문 바로가기

웹 프로그래밍/HTTP

HTTP 상태코드

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

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

-2xx(Successful): 요청 정상 처리 (e.g. 200 OK)

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

-4xx(Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음

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

 

2xx: 클라이언트의 요청을 성공적으로 처리

 

-200 OK

-201 Created(POST -> 서버가 URI 생성)

-202 Accepted(접수는 되었으나 미완료 e.g. batch)

-204 No Content(응답 본문에 보낼 데이터가 없음 e.g. save 버튼)

 

3xx: 요청을 완료하기 위해 유저 에이전트(웹 브라우저)의 추가 조치 필요

 

-웹 브라우저는 3xx 응답의 결과에 Location헤더가 있으면, Location 위치로 자동 이동

-종류

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

    -일시 리다이렉션: 일시적인 변경(주문완료 후 주문내역 이동), PRG(POST/Redirect/GET)

    -특수 리다이렉션: 결과 대신 캐시를 사용

 

-300 Multiple Choices (거의 안씀)

-301 Moved Permanently

-302 Found

-303 See Other

-304 Not Modified

-307 Temporary Redirect

-308 Permanent Redirect

 

-영구 리다이렉션(301, 308)

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

    -308(Permanent Redirect): 리다이렉트시 요청메서드와 본문유지(POST와 메시지 유지)

 

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

    -302(Found): 리다이렉트시 요청메서드가 GET으로 변하고, 본문이 제거될수 있음(관례로 많이 사용)

    -307(Temporary Redirect): 리다이렉트시 요청메서드와 본문유지 필수

    -303(See Other): 리다이렉트시 요청메서드가 GET으로 변경(명확)

 

-PRG: Post/Redirect/Get

    -POST로 주문후에 웹 브라우저를 새로고침 -> 중복주문 가능(낭패)

    -POST로 주문후에 주문 결과 화면을 GET 메서드로 리다이렉트 (서버는 DB에서 조회후 응답 전달)

    -새로고침해도 GET으로 조회됨

 

-기타 리다이렉션(304)

    -304(Not Modified)

        -캐시를 목적으로 사용(클: 캐시 그대로 써도 됨? -> 서버: ㅇㅇ -> 클: 캐시 재사용(캐시 리다이렉트)),

        -조건부 GET, HEAD 요청시 사용

 

4xx(클라이언트 오류)

-오류의 원인이 클라이언트에 있음

-이미 오류(스펙이 안맞음)가 있기에 똑같은 재시도가 실패함

 

-400(Bad Request): 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할수 없음(요청 구문, 메시지 등등 오류)

-401(Unauthorized): 해당 리소스에 대한 인증(로그인)이 필요함, 응답에 WWW-Authenticate 헤더와 인증 방법 설명

-403(Forbidden): 서버가 요청을 이해했지만 승인을 거부함, 주로 인증 증명은 있지만, 접근 권한이 불충분한 경우

-404(Not Found): 요청 리소스를 찾을 수 없음(진짜 서버에 없거나 권한이 부족해서 숨길때도 사용가능)

 

5xx(서버 오류)

-서버 문제로 오류 발생

-서버에 문제가 있기 때문에 재시도하면 성공 가능성 있음(DB 복구)

 

-500(Internal Server Error): 서버 문제로 오류 발생, 애매하면 500 오류

-503(Service Unavailable)

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

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

 

'웹 프로그래밍 > HTTP' 카테고리의 다른 글

HTTP 헤더(2)  (0) 2023.02.26
HTTP 헤더(1)  (0) 2023.02.26
HTTP 메서드 활용  (0) 2023.02.24
HTTP 메서드  (0) 2023.02.22
HTTP  (0) 2023.02.22