HTTP1.0-1.1 Protocol Massage & Header 구성요소

분 류

Massages

Header

설    명

지 원 버 전

생략여부

HTTP1.0

HTTP1.1

상용Header

General-Header

Date

현재시간

ex)Date: Tue, 15 Nov 1994 08:12:31 GMT

 

 

 

Pragma

케시제어

ex)Pragma: no-cache

×

 

 

 

Cache-Control

케시 여부·업데이트시간·내용·지움등

×

 

 

 

Connection

연결끊기-http1.1은 연결을 지속

ex)Connection: close

×

 

 

 

Transfer-Encoding

[entity-body]의 압축방식

×

 

 

 

Upgrade

프로토콜 변경시

ex)Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

×

 

 

 

Via

중계서버(프록시,게이트웨이등)의 지원프로토이름·버전·호스트명

×

 

 

Entity-Header

Allow

사용이 허용되는 메소드열거

ex)Allow: GET ,HEAD ,OPTIONS ,TRACE

 

 

 

Content-Encoding

[entity-body]의 리소스 압축방식(gzip, compress, deflate..)

ex)Content-Encoding: gzip

 

 

 

Content-Length

[entity-body]의 리소스 크기(바이트 단위)

ex)Content-Length: 3495

 ×※2

 

 

Content-Type

[entity-body]의 미디어 타입

ex)Content-Type: text/html

 

 

 

expires

자원의 만기 날짜(케시데이터 업데이트요구)

ex)Expires: Thu, 01 Dec 1994 16:00:00 GMT

 

 

 

Last-Modified

가장 최근에 수정된 날짜

ex)Last-Modified: Thu, 01 Dec 1994 16:00:00 GMT

 

 

 

Content-Base

[entity-body]리소스 base-URL

ex)Content-Base: http://www.isoft.co.kr/

×

 

 

 

Content-Language

[entity-body]언어정보

ex)Content-Language: da

×

 

 

 

Content-Location

[entity-body]의 URL

×

 ×※3

 

 

Content-MD5

전송시 [entity-body]의 오류발생검사-[entity-body]일부를 요약※1(MD5 RFC1864)

×

 

 

 

Content-Range

[entity-body]일부분 전송시의 해당부분(이어받기등에 사용)

ex)Content-Range: bytes 4150-5140/5140

×

 

 

 

ETag

케시 업데이트 정보를 위한 임의의 식별숫자※4

ex)ETag: "0-556-343b9e36"

×

 

※1(MD5 RFC1864)-vase64로 인코딩된 내용이 헤더값으로 존재한다.

※2 requst-line 의 method가 post 인 경우 생략 불가

※3Content-Base가 없는 경우 생략이 불가.

※4Entity-Tag 라고 불리며, If-Match·If-None-Match·If-Range에서 사용

분 류

Massages

Header

설    명

지 원 버 전

생략여부

HTTP1.0

HTTP1.1

Request

Requst-Line

Method※5

GET,POST,HEAD

 

OPTIONS,PUT,DELETE,TRACE

×

 

 

 

Request-URI

요청 데이터의 절대 주소나 상대주소.

ex)http://www.isoft.co.kt/index.html or /test/helloworld.html

 

 

 

HTTP-Version

HTTP" + 0.9∼1.1(해당 프로토콜)

 

 

Request-Header

Authorization

사용자 인증정보 - 사용자 ID와 암호가 함께 Base64로 인코딩※6

ex)Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

 

 

 

From

자원의 생성자나 웹마스터의 전자우편 주소

ex)From: psycho@isoft.co.kr

 

 

 

If-Modified-Since

GET 사용시-헤더 필드에 지정된 날짜보다 나중 자원만 전달(케시일자검색)

ex)If-Modified-Since: Tue, 15 Nov 1994 12:45:26 GMT

 

 

 

Refer

한페이지에서 다른페이지를 요청할 때 (링크시) 이전 페이지 주소제공

ex)Referer: http://www.w3.org/hypertext/DataSources/Overview.html

 

 

 

User Agenter

browser 정보

ex)User-Agent: MyWebBroswer/0.5

 

 

 

Accept

클라이언트의 사용가능 미디어타입

ex)Accept: text/*, text/html, text/html;level=1, */*

×

 

 

(Content

 Neogotation)

Accept-Charset

클라이언트에서 사용할 수 있는 문자 집합(생략시 모두인식)

ex)Accepr: iso-8859-1, unicode-1-1

×

 

 

(Content

 Neogotation)

Accept-Encoding

클라이언트에서 제공되는 인코딩 방법(압축)

ex)Accept-Encoding: compress, gzip

×

 

 

 

Accept-Language

클라이언트가 인식할 수 있는 언어(우선순위가능)

ex)Accept-Language: da, en-gb;q=0.8, en;q=0.7(독일어, 영국영어, 영어)

×

 

 

 

Host

서버의 기본URL(하나의 IP주소에 여러개의 이름을 가진 멀티 서버를 지원)

ex)www.w3.org

×

×

 

 

If-Match

ETag값 비교-Method수행-(PUT 메소드:해당header무시),다르면 402에러발생

ex)If-Match: "0-556-343b9e36"

×

 

 

 

If-None-Match

ETag값 비교, 다를때-Method수행-(If-Match와 반대),같을 때 에러

ex)If-None-Match: "0-556-343b9e36","0-1e4-34367116"

×

 

 

 

If-Range

클라이언트 캐시 정보를 업데이트 정보 (ETag or Date 비교)

×

 

 

 

If-Unmodified-Since

헤더값에 지정된 날자로부터 수정이 없는경우 Method를 수행

ex) If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT

×

 

 

 

Max-Forwards

이 메시지가 거쳐 갈수 있는 최대 Proxy의 개수를 지정

ex)Max-Forwards: 7

×

 

 

 

Proxy-Authorization

비공개 프록시 서버 유저인증을 위한 코드

×

 

 

 

Range

자원의 일부분만 받을때(이어받기기능) 받을범위 지정

ex)bytes=0-499            : <- 0~499byte를 얻고자 할 때.

×

 

※5각 메소드에 대한 설명 : ·GET    - 요청한 URL 자료를 전송 (실행화일일 경우 실행 결과를 전송)

                           ·POST   - [Entity-body]를 해당 서버에 수송(CGI활용. 단, Entity-body가 없거나, Content-Length가 없으면 에러..(400에러))

                           ·Head   - 응답메시지는 [Entity-body]없이 전송됨

                              ·OPTIONS-자원과 관련된 필요 사항 결정 및 서버 기능검색

                           ·PUT    -메시지 바디 부분의 데이터를 지정한 요구 URI이름으로 저장한다.(ftp의 PUT과 동일)

                           ·DELETE - 서버에서 요구 URI에 지정된 자원을 지울 수 있다.

                           ·TRACE  - 요구 메시지가 최종 수신처에 도달 경로를 기록하는 루프백(loop back) 검사용

                                         (클라이언트 의 요구 메시지가 거쳐가는 프록시나 게이트웨이의 중간 경로부터 최종 수신 서버까지의 경로를 알아낼 때 사용,

                                       Max-Forwards 헤드 필드에는 중간에 거쳐갈 프록시나 게이트웨이 경로의 최대수를 지정)

※6 ID :'Aladdin', PW : 'open sesame'일 경우 'Aladin:open sesame'을 Base64로 인코딩한 코드는 "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="

    주의 : Base64 자체가 공개된 인코딩이므로 보안상 문제가 많다.

분 류

Massages

Header

설    명

지 원 버 전

생략여부

HTTP1.0

HTTP1.1

Response

Status-Line

HTTP-Version

HTTP" + 0.9∼1.1(해당 프로토콜)

 

 

 

Status-Code

수신상태코드-(4Page의 표참조.)

 

 

 

Respon-Phrase

수신 상태코드에 대한 간략한 설명-(4Page의 표참조.)

 

 

Response-Header

Location

요구한 정보 실제 위치. 옮겨지거나 다를경우-정보주소가 실제 위치 정보.

(redirection,forwording 단, 절대주소만 가능.)

 

 

 

Server

서버 프로그램의 이름과 버전 정보

ex)Server: Apache/1.3a1

×

 

 

 

WWW-Authenticate   

사용자 인증이 필요한 자원을 요구시, 필요데이터와 서버가 제공하는 인증 방식

ex)WWW-Authenticate: Basic realm="아이 소프트"

×

 

 

 

Age

요구후 원 서버(origin Server)에서 응답생성하지까지의 시간(초단위)

×

 

 

 

Proxy-Authenticate

서버가 프록시 서버일 경우 유저 인증을 요구하기 위한 헤더이다.

×

 

 

 

Public

서버에서 지원 가능한 Method의 리스트(제한의 의미는없음)

ex)Public: OPTIONS, MGET, MHEAD, GET, HEAD

×

 

 

 

Retry-After

503 에러시 -몇초(시간)후에 다시 요구 메시지를 보내라는 정보

ex)Retry-After: Fri, 31 Dec 1999 23:59:59 GMT(Time)

   Retry-After: 120   (Second)

×

 

 

 

Warning

상태코드와 응답 구문에 추가적인 경고

×

 

 

 

Vary

 

×

 

  

 

<Status-Code Header 수신상태 표>

1xx: Informational -

 요구메시지를 받은 후

 연결 중 작업할 때.

2xx: Success -

 요구메시지를 제대로 받았을 때.

3xx: Redirection -

 요구메시지를 수행하기 위해

 다른 작업이 필요할 때.

4xx: Client Error -

 요구 메시지의 형식이 틀리거나

 빠진 부분이 있을 때.

5xx: Server Error -

서버에 문제가 있을 때.

100 Continue

200 OK

 성공처리

300 Multiple Choices

 (실제 발생하지 않음)

400 Bad Request

 요구가 올바르지 않음

500 Internal Server Error

 예기치 못한 서버처리오류

101 Switching Protocols

201 Created

 요구에따라 새로운자원생성(PUT)

301 Moved Permanently

 URL이 확정적으로 옮겨짐

401 Unauthorized

 사용자 인증이 필요

501 Not Implemented

 요구에 대한 지원불가

 (transfer-Encoding)

 

202 Accepted

 요구를 이해하였으며 진행중

302 Moved Temporarily

 URL이 임시적으로 옮겨짐

402 Payment Require

502 Bad Gateway

 게이트웨이·프락시의 응답오류

 

203 Non-Authoritative Information

303 See Other

403 Forbidden

 요구는 이해하나 수행거절(PUT)

503 Service Unavailable

 서버부하로 응답불가

 

204 No Content

 요구자료에 정보가 없음(empty)

304 Not Modified(If-Modified-Since)

 수정날짜에 수정되지 않음

404 Not Found

 요구한 파일이 없음

504 Gateway Time-out

 

205 Reser Content

305 Use Proxy

405 Method Not Allowed

 허락된 메소드가 아님

505 HTTP Version not supported

 (요구를 무시할 수 있음..??)

 

206 Partial Content

 

406 Not Acceptable

 

 

 

 

407 Proxy Authentication Required

 

 

 

 

408 Request Time-out

 

 

 

 

409 Conflict

 

 

 

 

410 Gone

 

 

 

 

411 Length Required

 

 

 

 

412 Precondition Failed

 

 

 

 

413 Request Entity Too Large

 

 

 

 

414 Request-URI Too Large

 

 

 

 

415 Unsupported Media Type