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 인 경우 생략 불가
※3 Content-Base가 없는 경우 생략이 불가.
※4 Entity-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
|
|