HTTP 요청 메시지
request line
header line
/r/n
body
.
.
.
GET/some/dir/page.html HTTP/1.1
Host : www.someschool.edu
Connection : close
User-agent : Mozilla/5.0
Accept-language : fr
-
request line(요청라인)은 "방식필드", "URL", "HTTP 버전필드"를 갖는다.
방식필드는 GET, POST, PUT, DELETE가 자주 쓰인다.
-
HTTP 메시지의 대부분은 GET 방식을 사용한다. GET 방식은 브라우저가 URL 필드로 식별되는 객체를 요청할 때 사용된다. 이 예에서 브라우저는 /somedir/page.html 객체를 요청하고 있다
-
헤더라인
- Host: www.someschool.edu는 객체가 존재하는 호스트를 명시하고 있다. 호스트까지 TCP 연결이 맺어있는데 이 헤더라인은 왜 있을까? 호스트 헤더라인이 제공하는 정보는 우ㅐㅂ 프록시 캐시에서 필요로 하기 때문이다.
- Connection : close 헤더라인을 포함함으로써, 브라우저는 서버에게 지속 연결을 원하지 않는다는 것을 말한다. 지속 연결은 Connection : keep-alive이다.
- Accept-language : 객체의 프랑스어 버전을 원하고 있음을 말한다. 이는 사용가능한 많은 콘텐츠 협상 헤더 중에 하나이다.
- 바디
HTTP클라이언트는 사용자가 폼을 채워 넣을 때 POST 방식을 사용한다. POST 메시지로 사용자는 서버에 웹 페이지를 요청하고 있으나, 웹 페이지의 특정 내용은 사용자가 폼 필드에 무엇을 입력하는가에 달려있다. GET말고 POST로 보낼때 바디에 넣는다.
만약 GET방식이었다면 URL에 넣어 보낸다.
HTTP 응답 메시지
HTTP/1.1 200 OK
Connection : close
Date : Tue, 18 Aug 2015 15: 44 : 04 GMT
Server : Apache/2.2.3(CentOS)
Last-Modified : Tue, 18 Aug 2015 15 : 11 : 03 GMT
Content-Length : 6821
Content-Type : text/html
상태라인, 헤더라인, entity Body(개체바디)로 이뤄져있다.
- Header
- Connection : close : 클라이언트에게 메시지를 보낸 후 TCP 연결을 닫는 데 사용한다.
- Date : HTTP 응답이 서버에 의해 생성되고 보낸 날짜와 시간을 나타낸다. 이 시간이 객체가 생성되거나 마지막으로 수정된 시간을 의미하는 것이 아니라는 것에 유의해야한다.
- Server : 안올 수도 있음
- Last-Modified : 객체가 생성되거나 마지막으로 수정된 시간과 날짜, 이 헤더는 로컬 클라이언트 와 네트워크 캐시서버에서의 객체 캐싱에 매우 중요하다.
- Content-Type: 이걸보고 json인지 뭔지 알수 있음
- 200 OK : 요청이 성공되었고, 정보가 응답으로 보내졌다.
- 301 OK : 리다이렉트 URL
- 400 Bad Request: 서버가 요청을 이해할 수 없다는 일반 오류 코드
- 404 Not Found : 요청 문서가 서버에 존재하지 않는다.
- 505 HTTP Version Not Supported : 요청 HTTP 프로토콜 버전을 서버가 지원하지 않는다.