상태코드는 서버로부터 리퀘스트 결과를 전달한다.

클라이언트가 서버를 향해 리퀘스트를 보낼 때 서버에서 그 결과가 어떻게 되었는지 알려주는 것이 상태 코드의 역할.

클래스설명
1xxInfomational리퀘스트 요청을 받아들여 처리 중
2xxSuccess리퀘스트를 정상적으로 처리했음
3xxRedirection리퀘스트를 완료하기 위해서 추가 동작이 필요
4xxClient Error서버는 리퀘스트 이해 불가능
5xxServer Error서버는 리퀘스트 처리 실패

HTTP 상태코드는 RFC2616에 실려있는 것 만도 40종류가 있고 게다가 WebDAV, Additional HTTP Status Codes 등의 확장을 포함하면 60종류 이상이다.

너무 많으니 자주 쓰는 것만 알아보자... -,,-


2xx 성공 (Success)

2xx 리스폰스는 리퀘스트가 정상으로 처리되었음을 나타낸다.

200 OK

클라이언트가 보낸 리퀘스트를 서버가 정상 처리하였음을 나타낸다.

204 No Content

서버가 리퀘스트를 받아서 처리하는 데는 성공했지만 리스폰스에 엔티티 바디를 포함하지 않습니다.
또한, 어떠한 엔티티 바디를 되돌려내서도 안됩니다.
이것은 클라이언트에서 서버에 정보를 보내는 것으로 족하고, 클라이언트에 대해서 새로운 정보를
보낼 필요가 없는 경우에 사용.

206 Partial Content

Range에 의해서 범위가 지정된 리퀘스트에 의해서 서버가 부분적 GET 리퀘스트를 받았음을 나타낸다.
리스폰스에는 Content-Range로 지정된 범위의 엔티티가 포함된다.


3xx 리다이렉트 (Redirection)

리퀘스트가 정상적으로 처리를 종료하기 위해 브라우저 측에서 특별한 처리를 수행해야 함을 나타낸다.

301 Moved Permanently

리퀘스트된 리소스에는 새로운 URI가 부여되어 있기 때문에, 이후로는 그 리소스를 참조하는 URI를 사용해야 한다는 것을 나타내고 있다.
결국 북마크하고 있는 경우에는 Location 헤더 필드에서 가리키고 있는 URI에 북마크를 다시 하는게 좋다는 것을 나타낸다.

예를 들어 아래와 같이 마지막 부분에 슬래시를 붙이는 것을 잊은 경우 301이 발생

http://example.com/sample

302 Found

리퀘스트된 리소스에는 새로운 URI가 할당되어 있기 때문에 그 URI를 참조해 주길 바란다는 의미.
301과 비슷하지만 302의 경우에는 영구적인 이동이 아닌, 어디까지나 일시적이다.
결국, 이동하는 곳의 URI는 앞으로 이동될 가능성이 있습니다.

303 See Other

리퀘스트에 대한 리소스는 다른 URI에 있기 때문에 GET 메서드를 사용해서 얻어야 한다는 것을 나타내고 있다.
302와 같은 기능이지만, 리다이렉트 장소를 GET 메서드로 얻어야 한다고 명확하게 되어 있는 점이 302와 다르다.

304 Not Modified

클라이언트가 조건부 리퀘스트를 했을 때 리소스에 대한 엑세스는 허락하지만, 조건이 충족되어 있지 않음을 표시하고 있다.
304를 되돌려 줄 경우에는 리스폰스 바디에 어떤 것도 포함되어 있어서는 안된다.

307 Temporary Redirect

302와 같은 의미를 지니지만, 302의 경우에는 POST로부터 GET으로 치환이 금지되어 있음에도 구현해 놓은 것을 보면 그렇게 되어 있지 않다.

307에서는 브라우저 사양에 따라 POST에서 GET으로 치환을 하지 않습니다.
단지, 브라우저마다 리스폰스를 처리하는 동작이 다를 수 있다.

tip

301, 302, 303 리스폰스 코드가 되돌아 오면, 대부분의 브라우저에서는 POST를 GET으로 바꾸어서 리퀘스트의 엔티티 바디를 삭제하고 리퀘스트를 자동적으로 재송신하도록 되어 있다.

301, 302의 사양은 POST 메서드를 GET 메서드로 바꾸는 것을 금지하고 있지만 구현해 놓은 것을 보면 이렇게 되어 있는 것이 대부분이다.


4xx 클라이언트 에러 (Client Error)

클라이언트의 원인으로 에러가 발생했음을 나타낸다.

400 Bad Request

리퀘스트 구문이 잘못되어 있음을 나타내고 있다.
이 에러가 발생한 경우, 리퀘스트 내용을 재검토하고 나서 재송신이 필요하다.

401 Unauthorized

송신한 리퀘스트에 HTTP 인증 정보가 필요하다는 것을 나타낸다.
또한, 이미 1번 리퀘스트가 이루어진 경우에는 유저 인증에 실패했음을 나타낸다.

403 Forbidden

리퀘스트된 리소스의 액세스가 거부되었음을 나타내고 있다.
서버 측은 거부의 이유를 분명히 할 필요가 있는데, 이유를 명확하게 하는 경우에는 엔티티 바디에 기재해서 유저 측에 표시한다.

403이 발생한 원인으로는 예를 들어 파일 시스템의 퍼미션이 부여되지 않은 경우와 액세스 권한(허가되지 않은 송신 IP 주소의 액세스 등) 에 문제가 있다.

404 Not Found

리퀘스트한 리소스가 서버상에 없다는 것을 나타낸다.


5xx 서버 에러 (Server Error)

서버 원인으로 발생한 에러를 나타낸다.

500 Internal Server Erorr

서버에서 리퀘스트를 처리하는 도중에 에러가 발생하였음을 나타낸다.

502 Bad Gateway

게이트웨이, 즉 서로 다른 프로토콜을 연결해주는 장치가 잘못된 프로토콜을 연결하거나,
어느 쪽 프로토콜에 문제가 있어 통신이 제대로 되지 않을 때 출력되는 코드.

주로 서버가 폭주하는 등의 이유로 과부하되었을 경우, 사용자 브라우저에 이상이 있거나 잘못된 네트워크 연결을 했을 경우 발생한다.

503 Service Unavaliable

일시적으로 서버가 과부하 상태이거나 점검중이기 때문에 현재 리퀘스트를 처리할 수 없음을 나타내고 있다.

profile
안녕하세요 신입 웹개발자입니다.

0개의 댓글