// HTTP 7230 공식스펙
HTTP-message = start-line
*( header-field CRLF )
CRLF
[ message-body ]
[HTTP 메시지 구조]
시작라인
, 헤더
, 공백라인
, 메시지 본문
으로 구성되어 있다.요청/응답
메시지 모두 동일한 구조를 갖지만 각 구조의 구성요소들은 차이가 있다.공백라인(CRLF)
은 필수정보[요청 메시지]
HTTP 요청 메시지
는 HTTP 메서드
, 리소스의 경로
, 프로토콜 버전
, 헤더
로 구성된다. (HTTP 요청 메시지
에도 메시지 본문
이 추가될 수 있다.)
[응답 메시지]
HTTP 응답 메시지
는 프로토콜 버전
, 상태 코드
, 상태 메시지
, 헤더
그리고 메시지 본문
으로 구성된다.
[요청 메시지 전체 구조]
// 요청 메시지
/* rfc7230 공식스펙 */
// method(GET,POST) SP(공백) request-target SP HTTP-version CRLF(엔터)
GET /search?q=hello&hl=ko HTTP/1.1
Host:www.google.com
[응답 메시지 전체 구조]
// 응답 메시지
/* rfc7230 공식스펙 */
// HTTP-version SP(공백) status-code SP reason-phrase CRLF(엔터)
HTTP/1.1 200 OK
Content-type: text/html;charset=UTF-8
Content-Length: 3423
<HTML>
<body>...</body>
</HTML>
GET /search?q=hello&hl=ko HTTP/1.1
GET
/search?q=hello&hl=ko
HTTP/1.1
#️⃣ HTTP 메서드
GET
, PUT
, POST
, DELETE
#️⃣ 요청 대상(request-target)
absolute-path[?query](절대경로[?쿼리])
/
로 시작하는 경로HTTP/1.1 200 OK
HTTP/1.1
200
OK
#️⃣ 상태 코드(Status Code)
200
: 성공400
: 클라이언트 요청 오류500
: 서버 내부 오류#️⃣ 상태 메시지(Status Message)
[HTTP 헤더 형식]
header-field = field-name ":" OWS field-value OWS (OWS:띄어쓰기 허용)
// field-name 대소문자 구분 없음
Host:www.google.com
Content-type: text/html;charset=UTF-8
Content-Length: 3423
메시지 바디의 내용
, 메시지 바디의 크기
, 인증
, 요청 클라이언트 정보
, 서버 애플리케이션 정보
등[HTTP 메시지 바디 형식]
<HTML>
<body>...</body>
</HTML>
HTML 문서
, 이미지
, 영상
, JSON
등 byte로 표현할 수 있는 모든 데이터 전송 가능[Reference]
gparkkii.log
Catsbi's Dlog
김영한 - HTTP 웹 기본지식 강의
Mozilla