HTTP 1.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.domain.com/
×
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)-base64로 인코딩된 내용이 헤더값으로 존재한다.
  • ※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.domain.com/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: master@domain.com
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-CodeHeader 수신상태 표

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


Archives

Select a Past Entry
View Entries By Category
View Entries By Month


TOP