HTTP 요청 메시지의 예)
**Method, Path, Version of the Protocol, Headers**
✔️ Method : HTTP 메서드는 보통 클라이언트가 수행하고자 하는 동작을 정의한 GET, POST, OPTIONS, HEAD
를 지칭한다. 클라이언트는 리소스를 가져오거나GET 사용
HTML 폼의 데이터를 전송POST 사용
한다.
다른 경우에는 다른 동작이 요구될 수도 있다.
✔️ Path : 가져오려는 리소스의 경로는 프로토콜 http://
, 도메인 여기서는 developer.mozilla.org
, 또는 TCP 포트 여기서는 80
인 요소들을 제거한 리소스의 URL이다.
✔️ Version of the Protocol : HTTP 프로토콜의 버전.
✔️ Headers : 서버에 대한 추가 정보를 전달하는 선택적 헤더들.
✔️ etc : POST와 같은 몇 가지 메서드를 위한, 전송된 리소스를 포함하는 응답의 본문과 유사한 본문.
HTTP 응답 메시지의 예)
**Version of the Protocol, Status Code, Status Message, Headers**
✔️ Version of the Protocol : HTTP 프로토콜의 버전.
✔️ Status Code : 요청의 성공 여부와, 그 이유를 나타내는 상태 코드.
✔️ Status Message : 아무런 영향력이 없는, 상태 코드의 짧은 설명을 나타내는 상태 메시지.
✔️ Headers : 요청 헤더와 비슷한, HTTP 헤더들.
✔️ etc : 선택 사항으로, 가져온 리소스가 포함되는 본문.
/* rfc7230 공식스펙 */
const HTTP-Message = start-line
* (header-field CRLF)
CRLF
[ message-body]
// 요청 메시지
/* rfc7230 공식스펙 */
// method(GET,POST) SP(공백) request-target SP HTTP-version CRLF(엔터)
GET /search?q=hello&hl=ko HTTP/1.1
Host:www.google.com
이렇게 세가지가 들어간다.
GET
종류 : GET, POST, PUT, DELETE ...
서버가 수행해야할 동작 지정
/search?q=hello&hl=ko
HTTP 1.1
// 응답 메시지
/* 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>
1️⃣ HTTP Version
2️⃣ HTTP 상태 코드
요청 성공, 실패를 나타냄
3️⃣ 이유 문구
사람이 이해할 수 있는 짧은 상태 코드 설명 글
이렇게 세가지가 들어간다.
/* rfc7230 공식스펙 */
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
1️⃣ HTTP 전송에 필요한 모든 부가정보가 들어있다
예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 서버 애플리케이션 정보, 캐시관리 정보... 등등등
2️⃣ 표준 헤더가 너무 많다.
3️⃣ 필요시 임의의 헤더도 추가 할 수 있다.
<HTML>
<body>...</body>
</HTML>
1️⃣ 실제 전송할 데이터이다.
2️⃣ HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터가 전송 가능하다.
출처:
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC#