-
HTTP 상태코드(1xx, 2xx, 3xx, 4xx, 5xx, PRG)Computer기본지식/Http지식 2021. 7. 14. 12:07반응형
일단 이건 HTTP통신을 할 경우 우리가 서버로부터 받을 수 있는 상태코드이다.
이 코드를 읽고 무엇이 잘못되었는지 바로 확인할 수 있으면 문제를 쉽게 고칠 수 있다.
일단 제일 앞 자리 숫자가 상태코드에서는 가장 큰 의미를 지니고 뒤에 숫자를 몰라도 문제를 알 수 있다.
1XX (Informational) : 요청이 수신되어 처리 중인 상태
2XX (Successful) : 요청 정상 처리 상태
3XX (Redirection) : 요청을 완료하려면 추가 행동이 필요한 상태
4XX (Client Error) : 클라이언트 요청 오류로 서버가 요청을 받아서 수행할 수 없는 상태
5XX (Server Error) : 서버 오류로 서버가 정상 요청을 처리하지 못하는 상태
우리가 가장 흔히 볼 수 있는 상태코드는 4XX나 5XX이다.
4XX는 URI를 잘못 입력했거나 클라이언트가 고쳐야 되서 똑같은 입력을 쳐도 오류가 나지만 5XX에러는 순간 서버의 장애가 있을 수도 있으므로 다시 새로고침을하면 될 수도 있다.
그럼 각 에러에 대해서 자세하게 알아보자.
1. 1XX (Informational)
요청이 수신되어 처리중인 상태. 거의 사용하지 않음.
2. 2XX (Successful)
클라이언트 요청을 성공적으로 처리
- 200 OK : 클라이언트 요청을 성공적으로 수행.
- 201 Created : 요청을 수행해서 새로운 리소스가 생성됨.
- 202 Accepted : 요청이 접수되었으나 처리가 되지 않았음.
- 204 No Current : 서버가 요청을 수락했지만 응답에 본문 내용이 없을 경우.
3. 3XX (Redirection)
요청 완료를 위해 추가 행동 필요상태
클라이언트는 요청의 응답에 3XX코드와 Location이 있으면 Location으로 바로 이동.
- 영구 리다이렉션 : 특정 URI의 리소스가 영구적으로 이동.
301 Moved Permanently : 리다이렉트 요청 시 Get으로 메소드 변경.
308 Permanent Redirect : 리다이렉트 요청 시 메소드 및 본문 유지.
- 일시 리다이렉션 : 일시적인 변경(PRG : Post/Redirect/Get).
302 Found : 메소드가 GET으로 변경.
307 Temporary Redirect : 본문과 메서도 유지.
303 See Other : 요청 메소드가 GET으로 변경.
그러나 문제가 발생한다. 만약 사용자가 주문 후 리다이렉트가 되고 다시 새로고침을 하는 경우는 주문이 한 번 더 들어간다. 아래의 그림과 같은 경우이다.
이러한 경우를 어떻게 방지해야할까? 바로 PRG(Post-Redirection-Get)기법을 사용한다. 이렇게 되면 리다이렉트 되고 메소드가 GET으로 변경되어 조회만 할 수 있고 등록이나 수정은 되지 않는다.
4. 4XX (Client Error)
클라이언트 요청 오류로 서버가 요청을 받아서 수행할 수 없는 상태.
400 Bad Request : 요청 구문 오류, 메시지 오류. 대부분 요청 파라미터가 잘못되거나 API 스펙이 맞지 않을 때.
401 Unauthorized : 클라이언트가 해당 리소스에 대해 인증이 필요함. 인증(로그인),인가(권한부여) 두 가지경우가있음.
403 Forbidden : 인증 자격은 있지만 권한이 없는 상태.
404 Not Found : 요청 리소스가 서버에 없을 경우.
5. 5XX (Server Error)
서버문제로 오류 발생.
500 Internal Server Error : 서버 내부 문제로 오류 발생.
503 Service Unavailable : 서비스 이용 불가능. 일시적인 과부하나 점검 등의 이유.
이렇게 HTTP의 상태코드에 대해서 알아봤다.
무조건 코드의 첫 번째 자리의 의미만 알면 뒤에 있는 건 몰라도 원인을 추측해볼 수 있다.
다음에는 HTTP의 헤더 내용에 대해서 포스팅 하겠다.
반응형'Computer기본지식 > Http지식' 카테고리의 다른 글
HTTP 헤더 (0) 2021.07.16 HTTP의 메소드 (0) 2021.07.13 HTTP구조 및 네트워크 (0) 2021.07.12