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 |