HTTP 공부한 걸 정리하는 문서입니다
참고 자료
MDN HTTP 문서로 기본 구조를 파악했고 상세내용은 HTTP 완벽 가이드를 찾아보았습니다.
서버가 특정 동작을 하게 만들기 위해 클라이언트에 전송하는 메시지이다. 다음과 같은 세 가지 요소로 이루어져있다.
서버가 수행해야할 동작을 나타낸다
주로 url, 프로토콜, 포트, 도메인의 절대 경로가 들어온다
요청 타겟 포멧은 HTTP 메서드에 따라 달라진다
끝에 ?과 쿼리 문자열이 붙는 절대 경로이다. 가장 일반적인 형식이며 GET, POST, HEAD, OPTIONS 메서드와 함께 사용한다
POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0
완전한 url 형식이다. 프록시에 연결하는 경우 대부분 GET과 함께 사용된다.
GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
도메인 이름 및 옵션포트로 이루어져있다. HTTP 터널을 구축하는 경우에만 CONNECT와 함께 사용할 수 있다
CONNECT developer.mozilla.org:80 HTTP/1.1
OPTIONS와 함께 별표 하나로 서버 전체를 나타낸다
OPTIONS * HTTP/1.1
':'
콜론이 붙고 뒤에 값이 붙는다. key: value요청에 대한 부가 정보 제공
요청과 응답 양쪽에 모두 나타날 수 있음. 바디에서 최종적으로 전송되는 데이터와는 관련이 없다.
컨텐츠 길이나 MIME 타입과 같이 엔티티 바디에 대한 자세한 정보를 포함하는 헤더. body가 없는 경우 entity 헤더는 전송되지 않는다.
빈 줄 다음에는 어떤 종류의 데이터든 들어갈 수 있는 메시지 본문이 필요에 따라 올 수 있다. request의 body는 웹 서버로 데이터를 실어보내며, response의 body는 클라이언트로 데이터를 반환한다. body에는 텍스트 뿐만 아니라 임의의 이진 데이터를 포함할 수 있다.
HTTP/1.1 404 Not Found.
다음과 같은 정보를 가지고 있다
HTTP/1.1
200
, 404
, 302
1XX: 100-101 정보
2XX: 200-206 성공
3XX: 300-305 리다이렉션
4XX: 400-415 클라이언트 에러
5XX: 500-505 서버 에러
응답에 대한 부가 정보 제공
나머지는 Request Header와 같다
모든 응답에 본문이 들어가지는 않는다. 201 (Created), 204(No Content)와 같은 상태코드를 가진 응답에는 보통 본문이 없다.