32
HTTP 완벽가이드 3. HTTP 메시지 yarn.choong

Http 완벽가이드(3장 http 메시지)

Embed Size (px)

Citation preview

Page 1: Http 완벽가이드(3장 http 메시지)

HTTP 완벽가이드 3장. HTTP 메시지

yarn.choong

Page 2: Http 완벽가이드(3장 http 메시지)

메시지의 각 부분

HTTP/1.0 200 OK

Content-type : text/plain Content-length: 19

Hellow World!

시작줄

Header

body

• 시작줄과 header는 줄단위로 분리된 문자열 (CRLF로 구분) • body는 선택적인 데이터 덩어리, 이진데이터 포함가능 하고 비어 있을 수 있다.

Page 3: Http 완벽가이드(3장 http 메시지)

메시지 문법

• 모든 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

Page 4: Http 완벽가이드(3장 http 메시지)

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

Page 5: Http 완벽가이드(3장 http 메시지)

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

Page 6: Http 완벽가이드(3장 http 메시지)

method

• 요청의 시작줄은 method로 시작 • GET (select)

– 서버에서 어떤 문서를 가져온다. (body를 가질 수 없음)

• POST (insert) – 서버가 처리해야 데이터를 보낸다

• PUT (update) – 서버에 요청 메시지의 본문을 저장한다.

• DELETE (delete) – 서버에서 문서를 제거한다. (body를 가질 수 없음)

• 그 외에도 HEAD, TRACE, OPTIONS, extension-method

Page 7: Http 완벽가이드(3장 http 메시지)

Status code

• 상태코드는 응답의 시작줄에 위치. • 상태코드들은 3자리 숫자. • 100-199

– 정보 관련 상태 정보, 100-101 정의 되어 있음.

• 200-299 – 성공 관련 상태 정보, 200-206 정의 되어 있음.

• 300-399 – 리다이렉션 관련 상태 정보, 300-305 정의 되어 있음.

• 400-499 – 클라이언트 에러 관련 상태 정보, 400-415 정의 되어 잇음.

• 500-599 – 서버 에러 관련 상태 정보, 500-505 정의 되어 잇음.

Page 8: Http 완벽가이드(3장 http 메시지)

사유구절(Reason-Phrase)

• 응답 시작줄의 마지막 구성요소

• 상태코드에 대한 설명 글.

• 상태 코드 와 1:1로 대응.

Page 9: Http 완벽가이드(3장 http 메시지)

버전번호

• 버전번호는 HTTP/x.y 형식으로 요청과 응답메시지 양쪽 모두 기술

• HTTp/1.1 이라고 해서 그 메시지가 1.1 메시지가 아니다, 보낸측에서 1.1 version까지 지원 가능하다는 의미이다.

• 또한 version은 <major>.<minor>으로 따로 구분된다. 예를 들어 1.2, 1.12 가 있다고 하면 1.2 보다 1.12가 더 높은 version이다.

Page 10: Http 완벽가이드(3장 http 메시지)

Header

• 요청/응답에 대해 추가정보 • 이름/값 쌍으로 이루어진다. • 일반 header

– 요청과 응답 양쪽 모두 사용가능

• Request header • Response header • Entity Header

– 본문 크기와 contents, resource 를 서술.

• Extension header – 명세에 정의되지 않은 새로운 header

Page 11: Http 완벽가이드(3장 http 메시지)

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>…..

Page 12: Http 완벽가이드(3장 http 메시지)

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

Page 13: Http 완벽가이드(3장 http 메시지)

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

Page 14: Http 완벽가이드(3장 http 메시지)

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

Page 15: Http 완벽가이드(3장 http 메시지)

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

Page 16: Http 완벽가이드(3장 http 메시지)

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

Page 17: Http 완벽가이드(3장 http 메시지)

상태코드 100-199 정보성

• HTTP/1.1에 도입

• 100 Continue

– 요청의 시작 부분을 일부가 받아 들어졌으며, 클라이언트는 나머지를 계속 이어서 보내야 함을 의미한다.

• 101 Switching Protocols

– 클라이언트가 Upgrade 헤더에 나열한 것 중 하나로 서버가 프로토콜을 바꾸었음을 의미한다.

Page 18: Http 완벽가이드(3장 http 메시지)

상태코드 200-299 성공

• 200 OK

• 201 Created

• 202 Accepted

• 203 Non-Authoritative Information

• 204 No Content

• 205 Reset Content

• 206 Partial Content

Page 19: Http 완벽가이드(3장 http 메시지)

상태코드 300-399 리다이렉션

• 300 Multiple choices

• 301 Moved Permanently

• 302 Found

• 303 See Other

• 304 Not Modified

• 305 Use Proxy

• 307 Temporary Redirect

Page 20: Http 완벽가이드(3장 http 메시지)

상태코드 400-499 클라이언트 에러

• 400 Bad Request

• 401 Unauthorized

• 403 Forbidden

• 404 Not Found

• 405 Method Not Allowed

• 408 Request Timeout

• 415 Unsupported Media Type

Page 21: Http 완벽가이드(3장 http 메시지)

상태코드 500-599 서버에러

• 500 Internal Server Error

• 501 Not Implemented

• 502 Bad Gateway

• 503 Service Unavailable

• 504 Gateway Timeout

• 505 HTTP version Not supported

Page 22: Http 완벽가이드(3장 http 메시지)

일반 Header

• 메시지에 대한 기본적인 정보를 제공.

• Connection

• Date

• MIME-Version

• Trailer chunked transfer

• Transfer-Encoding

• Upgrade

• Via

Page 23: Http 완벽가이드(3장 http 메시지)

일반 Cache header

• HTTP/1.0은 HTTP application에게 매번 원 서버로부터 객체를 가져오는 대신 로컬 복사본으로 캐시 할 수 있도록 해주는 최초의 Header를 도입.

• Cache-Control

– 메시지와 함께 캐시 지시자를 전달하기 위해 사용.

• Pragma

– 메시지와 함께 지시자를 전달하는 또다른 방법, 캐시에 국한되지 않는다.

Page 24: Http 완벽가이드(3장 http 메시지)

Request Header

• Client-IP • From • Host • Referer • UA-Color • UA-CPU • UA-Disp • UA-OS • UA-Pixels • User-Agent

Page 25: Http 완벽가이드(3장 http 메시지)

Accept Header

• 클라이언트가 무엇을 원하는지 혹은 원치 않은 것이 무엇인지 알려줄 수있다.

• Accept

• Accept-Charset

• Accept-Encoding

• Accept-Language

• TE

Page 26: Http 완벽가이드(3장 http 메시지)

조건부 Request Header

• 요청에 대한 제약 – 예를 들어 특정 문서를 요청 할 때 자신이 가지고 있는 사본과 다를 경우 전송해달라고 요청 할 수 있다.

• Except • If-Match • If-Modified-Since • If-None-Match • If-Range • If-Unmodified-Since • Range

Page 27: Http 완벽가이드(3장 http 메시지)

요청 보안헤더

• 요청을 위한 간단 인증요구/응답 체계를 가지고 있음.

• 리소스에 접근하기 전에 자신을 인증함으로 트랜잭션을 더 안전하게 만들기 위해서.

• Authorization

• Cookie

• Cookie2

Page 28: Http 완벽가이드(3장 http 메시지)

Proxy Request Header

• Proxy를 돕기 위한 헤더

• Max-Forwards

– 요청이 원 서버로 향하는 과정에서 다른 프락시나 게이트로 전달 될 수 있는 최대 횟수.TRACE method와 함께 사용된다.

• Proxy-Authorization

– Authorization과 같으나 프락시에서 인증을 할 때 사용.

• Proxy-Connection

– Connection과 같으나 프락시에 연결을 맺을 때 사용.

Page 29: Http 완벽가이드(3장 http 메시지)

Response Header

• 응답의 대한 부가정보 제공.

• Age

• Public

• Retry-After

• Server

• Title

• Warming

Page 30: Http 완벽가이드(3장 http 메시지)

Entity Header

• 요청과 응답 모두 Entity Header를 가질 수 있다.

• Allow

– 수행 될 수 있는 요청 메소드들을 나열한다.

• Location

– Client에게 엔티티가 실제로 어디에 위치하고 있는지 설명한다.

– 수신자에게 리소스에 대한 새로운 위치를 알려줄때 사용한다.

Page 31: Http 완벽가이드(3장 http 메시지)

Content header

• 콘테츠 헤더는 엔티티의 콘테츠에 대한 구체적인 정보를 제공. • Content-Base • Content-Encoding • Content-Language • Content-Length • Content-Location • Content-MD5 • Content-Range • Content-Type

Page 32: Http 완벽가이드(3장 http 메시지)

Entity caching header

• 엔티티 캐싱에 대한 정보를 제공

– 리소스에 대해 캐시된 사본이 아직 유효한지에 대한 정보.

• Etag

– 이 엔티티에 대한 엔티티 태그

• Expires

– 더 이상 유효하지 않아 원본을 다시 받아 와야하는 일시

• Last-Modified

– 가장 최근 변경 일시