alpyrithm_알파이리즘
HTTP 프로토콜 및 상태 코드 정리 본문
HTTP(하이퍼텍스트 전송 프로토콜, HyperText Transfer Protocol)
- 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다.
- 클라이언트(브라우저 - 웹 관점)와 서버 사이에 이루어지는 요청(Request)/응답(Response) 프로토콜이다.
- 무상태 프로토콜로 트랜젝션(독집적인 요청-응답) 발생 후 연결이 종료된다.
- 기본 포트는 80번이다.
HTTP 요청 메시지
클라이언트가 서버에게 보내는 요청 메시지 구성
- 요청 내용
- 헤더
- 빈 줄(empty line)
- 기타 메시지
HTTP 요청 메서드
REST : 주소를 자원이라고 보고 메서드를 동사라고 보는 개방 방식이다.
주요 메서드
- GET : 존재하는 자원에 대한 요청/조회
- Body(본문) X
- POST : 새로운 자원을 생성
- Body(본문) O
- PUT/PATCH : 존재하는 자원에 대한 전체/부분 변경
- Body(본문) O
- DELETE : 존재하는 자원에 대한 삭제
- Body(본문) X
기타 메서드
- HEAD : 서버 헤더 정보를 획득. GET과 비슷하나 Response Body를 반환하지 않음
- Body(본문) X
- OPTIONS : 서버 옵션들을 확인하기 위한 요청. CORS에서 사용
- Body(본문) 선택 사항
HTTP 응답 메시지
응답 메시지 구성
- 상태 표시 행(status line)
- 상태 코드(status code)
- reason message
- 응답 헤더 필드
- 빈 줄(empty line)
- 기타 메시지
HTTP 상태 코드(HTTP Status Code)
- 서버에서 설정해주는 응답(Response) 정보이다.
- 세 자리 수로 된 응답 코드이다.
- HTTP 요청이 성공적으로 완료되었는지 알려준다.
- 정보 제공 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 서버 에러
1XX(조건부 응답)
Informational(정보). 정보 교환
요청을 받았으며 작업을 계속함
100
- continue(계속)
- 요청자는 요청을 계속해야 함
- 클라이언트로부터 일부 요청을 받았으니 나머지 요청 정보를 계속 보내주길 바람
101
- Switching Protocols(프로토콜 전환)
- 서버는 클라이언트의 요청대로 Upgrade 헤더를 따라 다른 프로토콜로 바꿀 것임
- 요청자가 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중
102
- Processing(처리)
- 사용자가 수신 요청을 하여 처리하고 있지만 아직 제대로 된 응답을 할 수 없는 상태
103
- Early Hints
- Link 헤더와 함께 사용되어 서버가 응답을 준비하는 동안 사용자 에이전트가(user agent) 사전 로딩(preloading)을 시작할 수 있도로 함
2XX(성공)
Success(성공). 데이터 전송이 성공적으로 이루어졌거나, 이해되었거나, 수락되었음
200
- OK(성공)
- GET : 리소스를 불러와서 메시지 바디에 전송됨
- HEAD : 개체 헤더가 메시지 바디에 있음
- PUT or POST : 수행 결과에 대한 리소스가 메시지 바디에 전송됨
- TRACE : 메시지 바디는 서버에서 수신한 요청 메시지를 포함함
- 오류 없이 전송 성공
- 서버가 요청을 제대로 처리함
- 요청한 페이지를 서버가 제공했음
201
- Created(작성됨)
- 성공적으로 요청되었으며 서버가 새 리소스를 작성함
- 일반적으로 POST, PUT 이후에 따라옴
202
- Accepted(허용됨)
- 서버가 클라이언트의 요청을 수락함
- 서버가 요청을 접수했지만 아직 처리하지 않음
203
- Non-authoritavive Information(신뢰할 수 없는 정보)
- 서버가 클라이언트 요구 중 일부만 전송
- 서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하고 있음
204
- Non Content(콘텐츠 없음)
- 클라이언트 요구를 처리했으나 전송할 데이터가 없음
- 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음
205
- Reset Content(콘텐츠 재설정)
- 새 문서 없음, 브라우저는 문서 창을 리셋해야 함
- 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않음
- 204 응답과 달리 요청자가 문서 보기를 재설정할 것을 요구함
206
- Partial Content(일부 콘텐츠)
- 클라이언트가 Range 헤더와 함께 요청의 일부분을 보냈고 서버는 이를 수행함
- 서버가 GET 요청의 일부만 성공적으로 처리함
207
- Multi-Status(다중 상태)
- 여러 소스에서 여러 응답인 상태에서 적절한 정보를 사용자한테 제공할 수 있도록 함
208
- Already Reported(이미 보고됨)
- DAV 바인딩 멤버는 이미 응답의 앞부분에 열거되어 있으며 다시 포함되지 않음
226
- IM Used
- 서버가 사용자의 GET 요청에 대한 리소스의 의무 완료, 현재 인스턴스에서 적용된 하나 이상의 인스턴스 조작 결과를 보냄
3XX(리다이렉션 완료)
Redirection(리다이렉션). 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 함
300
- Multiple Choice(여러 선택항목)
- 서버가 요청에 따라 여러 조치를 선택할 수 있음
- 서버가 사용자 에이전트에 따라 수행할 작업을 선택하거나, 요청자가 선택할 수 있는 작업 목록을 제공함
301
- Moved Permanently(영구 이동)
- 요청한 페이지를 새 위치로 영구적으로 이동함
- 요청한 리소스의 URI가 변경됨
- 일반적으로 GET or HEAD 요청에 대한 응답으로 이 응답을 표시하면 요청자가 자동으로 새 위치로 전달됨
302
- Found(임시 이동)
- 현재 서버가 다른 위치의 페이지로 요청에 응답함
- 요청한 리소스의 URI가 일시적으로 변경됨
303
- See Other(기타 위치 보기)
- 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답
304
- Not Modified(수정되지 않음)
- 마지막 요청 이후 요청한 페이지는 수정되지 않음
- 캐시 목적으로 사용됨
- 응답이 수정되지 않았음을 알려줌
305
- Use Proxy(프록시 사용)
- 프록시를 사용하여 요청한 페이지만 액세스 가능
307
- Temporary Redirect(임시 리다이렉션)
- 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 함
- 요청한 리소스가 다른 URI에 있어 이전 요청과 동일한 메서드를 사용하여 요청할 때 서버가 클라이언트에 이 응답을 직접 보냄
308
- Permanent Redirect(영구 리다이렉션)
- 영구적으로 다른 URI에 위치하고 있음을 의미함
4XX(요청 오류/클라이언트 에러 응답)
Client error responses. 클라이언트에 오류가 있음
400
- Bad Request(잘못된 요청)
- 서버가 요청의 구문을 인식하지 못함
401
- Unauthorized(권한 없음)
- 인증이 필요한 요청
- 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있음
402
- Payment Required(결제 필요)
- 결제가 필요한 요청
403
- Forbidden(금지)
- 요청을 거부함
404
- Not Found(찾을 수 없음)
- 요청한 페이지(Resource)를 찾을 수 없음
405
- Method Not Allowed(허용되지 않는 방법)
- 요청에 지정된 방법을 사용할 수 없음
406
- Not Acceptable(허용되지 않음)
- 요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없음
407
- Proxy Authentication Required(프록시 인증 필요)
- 요청자가 프록시를 사용하여 인증해야 함
408
- Request Timeout(요청 시간 초과)
- 요청 대기가 시간을 초과함
409
- Conflict(충돌)
- 요청을 수행하는 중에 충동이 발생함
- 요청이 현재 서버의 상태와 충돌됨
410
- Gone(사라짐)
- 요청한 리소스가 영구적으로 삭제되었을 때 사용
411
- Length Required(길이 필요)
- 유효한 콘텐츠 길이 헤더 입력란 없이는 요청을 수락하지 않음
412
- Precondition Failed(사전 조건 실패)
- 요청자가 요청 시 부과한 사전 조건을 만족하지 않음
- 클라이언트의 헤더에 있는 전제조건은 서버의 전제조건에 적절하지 않음
413
- Payload Too Large(요청 속성이 너무 큼)
- 요청이 너무 커서 서버가 처리할 수 없음
- 요청은 서버에서 정의한 한계보다 큼
414
- URI Too Long(요청 URI가 너무 긺)
- 요청 URI(URL)가 너무 길어 서버가 처리할 수 없음
415
- Unsupported Media Type(지원되지 않는 미디어 유형)
- 요청이 요청한 페이지에서 지원하지 않는 형식으로 되어 있음
- 요청한 미디어 포맷은 서버에서 지원되지 않음
416
- Requested Range Not Satisfiable(처리할 수 없는 요청 범위)
- 요청이 페이지에서 처리할 수 없는 범위에 해당함
- 헤더 필드에 요청한 지정 범위를 만족시킬 수 없음
417
- Expectation Failed(예상 실패)
- Expect 요청 헤드 입력란의 요구사항을 만족할 수 없음
418
- I'm a teapot
- 서버는 커피를 찻 주전자에 끓이는 것을 거절함
421
- Misdirected Request
- 서버로 유도된 요청은 응답을 생성할 수 없음
422
- Unprocessable Entity(처리할 수 없는 엔티티)
- 요청은 잘 만들어졌지만 문법 오류로 따를 수 없음
423
- Locked(잠김)
- 접근하려는 리소스가 잠겨 있음
424
- Failed Dependency(실패된 의존성)
- 이전 요청이 실패돼서 지금 요청도 실패함
426
- Upgrade Required(업그레이드 필요)
- 클라이언트는 업그레이드 헤더 필드에 주어진 프로토콜로 요청을 보내야 함
428
- Precondition Required(전제조건 필요)
- 오리진 서버는 요청이 조건적임
429
- Too Many Requests(너무 많은 요청)
- 사용자가 일정 시간 동안 너무 많은 요청을 보냄
431
- Request Header Fields Too Large(요청 헤더 필드가 너무 큼)
- 요청한 헤더 필드가 너무 커서 서버는 요청을 처리하지 않음
451
- Unavailable For Legal Reasons(법적인 이유로 이용 불가)
- 사용자가 요청한 것은 정부에 의해 검열된 웹 페이지와 같은 불법적인 리소스임
5XX(서버 오류/서버 에러 응답)
Server error responses. 서버가 유효한 요청을 명백하게 수행하지 못했음
500
- Internal Server Error(내부 서버 오류)
- 서버에 오류가 발생하여 요청을 수행할 수 없음
- 서버가 처리 방법을 모르는 상황이 발생함
501
- Not Implemented(구현되지 않음)
- 서버에 요청을 수행할 수 있는 기능이 없음
- 요청 방법이 서버에서 지원되지 않아 처리할 수 없음
502
- Bad Gateway(불량 게이트웨이)
- 서버가 게이트웨이나 프록시 역할을 하고 있거나 업스트림 서버에서 잘못된 응답을 받음
- 서버가 요청을 처리하는 데 필요한 응답을 얻기 위해 게이트웨이로 작업하는 동안 잘못된 응답을 수신했음을 의미함
503
- Service Unavailable(서비스를 사용할 수 없음)
- 서버가 오버로드되었거나 유지관리를 위해 다운되어 현재 서버를 사용할 수 있음
- 서버가 요청을 처리할 준비가 되지 않음
- 보통 일시적인 상태임
504
- Gateway Timeout(게이트웨이 시간 초과)
- 서버가 게이트웨이나 프록시 역할을 하고 있거나 업스트림 서버에서 제때 요청을 받지 못함
- 서버가 게이트웨이 역할을 하고 있으며 적시에 응답을 받을 수 없을 때 주어짐
505
- HTTP Version Not Supported(HTTP 버전이 지원되지 않음)
- 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않음
506
- Variant Also Negotiates
- 서버에 내부 구성 오류가 있음
507
- Insufficient Storage(용량 부족)
- 서버에 내부 구성 오류가 있음
508
- Loop Detected(루프 감지됨)
- 서버가 요청을 처리하는 동안 무한 루프를 감지함
509
- 대역폭 제한 초과
510
- Not Extended(확장되지 않음)
- 서버가 요청을 이행하려면 요청에 대한 추가 확장이 필요함
511
- Network Authentication Required(네트워크 인증 필요)
- 클라이언트가 네트워크 액세스를 얻기 위해 인증을 받아야 할 필요가 있음을 의미
참고
▼프로토콜
- 상호 간에 정의한 규칙을 의미하며 특정 기기 간에 데이터를 주고받기 위해 정의됨
728x90
반응형
'SM공부' 카테고리의 다른 글
API 정리 - RESTful API, GraphQL (0) | 2020.09.04 |
---|---|
VPN(Virtual Private Network)이란? (0) | 2020.07.15 |
RudderStack Architecture 알아보기!! (0) | 2020.06.19 |
비전공자의 CS 공부, SM 프로젝트 공부 목록 (0) | 2020.06.19 |
스크럼(Scrum) 공부 및 정리 (0) | 2020.06.10 |
Comments