메시지의 각 부분
HTTP/1.0200 OK
Content-type : text/plain
Content-length: 19
Hellow World!
시작줄
Header
body
• 시작줄과 header는 줄단위로 분리된 문자열 (CRLF로 구분)
• body는 선택적인 데이터 덩어리, 이진데이터 포함가능
하고 비어 있을 수 있다.
3.
메시지 문법
• 모든HTTP 메시지는 요청 or 응답 메시지로 구분.
• 요청 메시지의 형식
<method> <request URL> <version> GET /specials/saw-blade.gif HTTP/1.0
<header> HOST: www.joes-hardware.com
<body> GET Method는 body를 가질수 없음
• 응답 메시지의 형식
<version> <HTTP status code> <사유구절> HTTP/1.0 200 OK
<header> Content-Type: image/gif
<body> image data
4.
Start-line(request-line)
• Request start-line
–어떤 동작이 일어나야 하는지 설명해주는 Method
– 동작에 대상을 지칭하는 요청 URL
– HTTP Version
– 모든 필드는 공백으로 구분한다.
Request-Line = Method Request-URI HTTP-Version CRLF
GET /test/hi-there.txt HTTP/1.1
5.
Start-line(status-line)
• Response start-line
–수행결과에 대한 상태정보
– Http의 version
– 숫자로 된 http status code
– 수행 상태에 대해 설명해주는 Text
Status-Line = HTTP-Version Status-Code Reason-Phrase CRLF
HTTP/1.0 200 OK
6.
method
• 요청의 시작줄은method로 시작
• GET (select)
– 서버에서 어떤 문서를 가져온다. (body를 가질 수 없음)
• POST (insert)
– 서버가 처리해야 데이터를 보낸다
• PUT (update)
– 서버에 요청 메시지의 본문을 저장한다.
• DELETE (delete)
– 서버에서 문서를 제거한다. (body를 가질 수 없음)
• 그 외에도 HEAD, TRACE, OPTIONS, extension-method
7.
Status code
• 상태코드는응답의 시작줄에 위치.
• 상태코드들은 3자리 숫자.
• 100-199
– 정보 관련 상태 정보, 100-101 정의 되어 있음.
• 200-299
– 성공 관련 상태 정보, 200-206 정의 되어 있음.
• 300-399
– 리다이렉션 관련 상태 정보, 300-305 정의 되어 있음.
• 400-499
– 클라이언트 에러 관련 상태 정보, 400-415 정의 되어 잇음.
• 500-599
– 서버 에러 관련 상태 정보, 500-505 정의 되어 잇음.
버전번호
• 버전번호는 HTTP/x.y형식으로 요청과 응답메시지 양쪽 모두 기술
• HTTp/1.1 이라고 해서 그 메시지가 1.1 메시지가 아니다, 보낸측에서
1.1 version까지 지원 가능하다는 의미이다.
• 또한 version은 <major>.<minor>으로 따로 구분된다. 예를 들어
1.2, 1.12 가 있다고 하면 1.2 보다 1.12가 더 높은 version이다.
10.
Header
• 요청/응답에 대해추가정보
• 이름/값 쌍으로 이루어진다.
• 일반 header
– 요청과 응답 양쪽 모두 사용가능
• Request header
• Response header
• Entity Header
– 본문 크기와 contents, resource 를 서술.
• Extension header
– 명세에 정의되지 않은 새로운 header
11.
Method-GET
• 리소스 요청용도
GET /seasonal/index0fall.html HTTP/1.1
Host: www.joes-hareware.com
Accept: *
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 617
<htm>…..
12.
Method-HEAD
• GET 처럼해동하지만, 서버는 Header 값만 돌려준다.
• 서버 개발자는 반드시 GET과 동일하게 개발 해야한다. 단 Body는 반
환되지 않게 처리.
HEAD /seasonal/index0fall.html HTTP/1.1
Host: www.joes-hareware.com
Accept: *
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 617
13.
Method-PUT
• PUT method의의미는 서버가 요청의 본문을 가지고 요청 URL의 이름대로
새문서를 만들거나, 이미 URL이 존재 하면 본문을 교체 하는것 이다.
PUT /seasonal/index0fall.html HTTP/1.1
Host: www.joes-hareware.com
Content-Type: text/plain
Content-Length: 617
Update product list comming
HTTP/1.1 201 Created
Location: http://www.joes-hardware.com/product-list.txt
Content-Type: text/plain
Content-Length: 617
http://www.joes-hardware.com/product-list.txt
14.
Method-POST
• Post method는서버에 입력 데이터를 전송하기 위해 설계.
POST /seasonal/index0fall.html HTTP/1.1
Host: www.joes-hareware.com
Content-Type: text/plain
Content-Length: 617
Item=bandsaw 2647
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 617
The bandsaw model 2647 is in stock
15.
Method-OPTIONS
• 특정 리소스에어떤 method가 지원하는지 확인 가능.
OPTIONS/seasonal/index0fall.html HTTP/1.1
Host: www.joes-hareware.com
Accept: *
HTTP/1.1 200 OK
Allow: GET,POST, PUT
Content-Length: 0
16.
Method-DELETE
• 리소스 삭제를요청.
DELETE /seasonal/index0fall.html HTTP/1.1
Host: www.joes-hareware.com
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 617
I have your delete request
17.
상태코드 100-199 정보성
•HTTP/1.1에 도입
• 100 Continue
– 요청의 시작 부분을 일부가 받아 들어졌으며, 클라이언트는 나머지를 계속 이
어서 보내야 함을 의미한다.
• 101 Switching Protocols
– 클라이언트가 Upgrade 헤더에 나열한 것 중 하나로 서버가 프로토콜을 바꾸
었음을 의미한다.
18.
상태코드 200-299 성공
•200 OK
• 201 Created
• 202 Accepted
• 203 Non-Authoritative Information
• 204 No Content
• 205 Reset Content
• 206 Partial Content
19.
상태코드 300-399 리다이렉션
•300 Multiple choices
• 301 Moved Permanently
• 302 Found
• 303 See Other
• 304 Not Modified
• 305 Use Proxy
• 307 Temporary Redirect
20.
상태코드 400-499 클라이언트에러
• 400 Bad Request
• 401 Unauthorized
• 403 Forbidden
• 404 Not Found
• 405 Method Not Allowed
• 408 Request Timeout
• 415 Unsupported Media Type
21.
상태코드 500-599 서버에러
•500 Internal Server Error
• 501 Not Implemented
• 502 Bad Gateway
• 503 Service Unavailable
• 504 Gateway Timeout
• 505 HTTP version Not supported
22.
일반 Header
• 메시지에대한 기본적인 정보를 제공.
• Connection
• Date
• MIME-Version
• Trailer chunked transfer
• Transfer-Encoding
• Upgrade
• Via
23.
일반 Cache header
•HTTP/1.0은 HTTP application에게 매번 원 서버로부터 객체를
가져오는 대신 로컬 복사본으로 캐시 할 수 있도록 해주는 최초의
Header를 도입.
• Cache-Control
– 메시지와 함께 캐시 지시자를 전달하기 위해 사용.
• Pragma
– 메시지와 함께 지시자를 전달하는 또다른 방법, 캐시에 국한되지 않는다.
Accept Header
• 클라이언트가무엇을 원하는지 혹은 원치 않은 것이 무엇인지 알려줄 수
있다.
• Accept
• Accept-Charset
• Accept-Encoding
• Accept-Language
• TE
26.
조건부 Request Header
•요청에 대한 제약
– 예를 들어 특정 문서를 요청 할 때 자신이 가지고 있는 사본과 다를 경우 전송해달
라고 요청 할 수 있다.
• Except
• If-Match
• If-Modified-Since
• If-None-Match
• If-Range
• If-Unmodified-Since
• Range
27.
요청 보안헤더
• 요청을위한 간단 인증요구/응답 체계를 가지고 있음.
• 리소스에 접근하기 전에 자신을 인증함으로 트랜잭션을 더 안전하게
만들기 위해서.
• Authorization
• Cookie
• Cookie2
28.
Proxy Request Header
•Proxy를 돕기 위한 헤더
• Max-Forwards
– 요청이 원 서버로 향하는 과정에서 다른 프락시나 게이트로 전달 될 수 있는
최대 횟수.TRACE method와 함께 사용된다.
• Proxy-Authorization
– Authorization과 같으나 프락시에서 인증을 할 때 사용.
• Proxy-Connection
– Connection과 같으나 프락시에 연결을 맺을 때 사용.
29.
Response Header
• 응답의대한 부가정보 제공.
• Age
• Public
• Retry-After
• Server
• Title
• Warming
30.
Entity Header
• 요청과응답 모두 Entity Header를 가질 수 있다.
• Allow
– 수행 될 수 있는 요청 메소드들을 나열한다.
• Location
– Client에게 엔티티가 실제로 어디에 위치하고 있는지 설명한다.
– 수신자에게 리소스에 대한 새로운 위치를 알려줄때 사용한다.
31.
Content header
• 콘테츠헤더는 엔티티의 콘테츠에 대한 구체적인 정보를 제공.
• Content-Base
• Content-Encoding
• Content-Language
• Content-Length
• Content-Location
• Content-MD5
• Content-Range
• Content-Type
32.
Entity caching header
•엔티티 캐싱에 대한 정보를 제공
– 리소스에 대해 캐시된 사본이 아직 유효한지에 대한 정보.
• Etag
– 이 엔티티에 대한 엔티티 태그
• Expires
– 더 이상 유효하지 않아 원본을 다시 받아 와야하는 일시
• Last-Modified
– 가장 최근 변경 일시