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

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

Jul 27, 2015

Download

Software

Choonghyun Yang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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

– 가장 최근 변경 일시