// 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=koHTTP/1.1#️⃣ HTTP 메서드
GET, PUT, POST, DELETE#️⃣ 요청 대상(request-target)
absolute-path[?query](절대경로[?쿼리])/로 시작하는 경로HTTP/1.1 200 OK
HTTP/1.1200OK#️⃣ 상태 코드(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