이 글은 MDN documentation 을 정리한 글입니다.
이전 포스팅에서 HTTP 요청에 대한 명세를 포스팅했습니다. 이번 포스팅은 HTTP 응답에 관련된 내용입니다.
상태줄
HTTP 요청에서의 시작줄 (start line) 과 동일합니다. 응답 내용의 상태줄은 다음과 같은 정보를 포함하고 있습니다.
- 프로토콜 버전: 보통은
HTTP/1.1
이며, 프로토콜에 관련된 내용입니다. - 상태코드: 요청의 성공 혹은 실패 여부를 나타냅니다. 상태코드에 대한 내용은 다음과 같습니다.
- 1xx 번대 - informational (정보)
- 2xx 번대 - Success (성공), 데이터 전송이 성공적으로 이루어짐을 뜻합니다.
- 3xx 번대 - Redirection (방향 바꿈) - 자료의 위치가 변경되었습니다.
- 4xx 번대 - Client Error - 클라이언트 측 오류로써 주소를 잘못 입력했거나 요청이 잘못되었을때 반환되는 코드입니다.
- 5xx 번대 - Server Error - 서버 오류로써 올바른 요청이 처리되지 않았을떄 반환합니다.
- 상태 텍스트: 짧고 간결하게 상태코드에 대한 설명을 글로 나타냅니다.
ex) HTTP/1.1 404 Not Found.
헤더 (Header)
요청 헤더와 동일한 구조를 따릅니다. 문자열 다음에 콜론 (;)
이 오며 그 뒤에 오는 값은 헤더값에 따라 구조가 달라집니다. 헤더는 값을 포함하여 전체 한줄로 표시됩니다.
- General 헤더: 요청 헤더와 동일하게
Via
등과 같은 메세지를 표시합니다. - Response 헤더:
Accept-Ranges
와 같은 헤더로써 상태줄에 미처 포함되지 못한 정보를 제공합니다. - Entity 헤더:
Content-Length
와 같이 본문의 정보가 포함됩니다.
본문 (Body)
본문은 마지막 부분에 포함되며, 모든 응답에 Body가 포함되지 않습니다. 본문의 내용은 다음과 같습니다.
- 이미 길이가 정의된 단일 파일로 구성된 단일-리소스 본문: 헤더 두개 (
Content-Type
,Content-Length
)로 정의됩니다. - 길이를 모르는 단일-리소스 본문:
Transfer-Encoding
이 chunked로 설정되어 있으며 파일은 청크로 나뉘어 인코딩 되어 있습니다.