[WEB] HTTP Header 구조

[WEB] HTTP 헤더 구조


HTTP 헤더
아래 헤더 정보는 텍스트만 있는 HTML문서에 대한 요청/응답 헤더(HTTP Version 1.1을 기준)

Get /test/test.htm HTTP/1.1

Accept: */*

Accept-Language: ko

Accept-Encoding: gzip, deflate

If-Modified-Since: Fri, 21 Jul 2006 05:31:13 GMT

If-None-Match: "734237e186acc61:a1b"

User-Agent: Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; 

InfoPath.1)

Host: localhost

Connection: Keep-Alive



HTTP/1.1 200 OK

Server: Microsoft-IIS/5.1

X-Powered-By: ASP.NET

Date: Fri, 21 Jul 2006 05:32:01 GMT

Content-Type: text/html

Accept-Ranges: bytes

Last-Modified: Fri, 21 Jul 2006 05:31:52 GMT

ETag: "689cb7f885acc61:a1b"

Content-Length: 101

요청헤더

Get /test/test.htm HTTP/1.1

  • 요청 method와 요청 파일정보, http 버전
    • GET, POST, PUT, DELETE
    • HEAD : 문서의 헤더 정보만 요청하며, 응답데이터(body)를 받지 않음
    • TRACE : 클라이언트가 요청한 자원에 도달하기까지의 경로를 기록하는 루프백(loop back) 검사용.
      클라이언트가 요청 자원에 도달하기까지 거쳐가는 프록시나 게이트웨이의 중간 경로부터 최종 수신 서버까지의 경로를 알아낼때 사용

Accept

  • 클라이언트가 허용할 수 있는 파일 형식으로 */*은 특정 유형이 아닌 모든 파일 형식을 지원함

Accept-Language

  • 클라이언트가 인식할 수 있는 언어로 우선 순위 지원이 가능

Accept-Encoding

  • 클라이언트가 인식할 수 있는 인코딩
  • 압축 방법으로 위의 내용에서는 서버에서 gzip, deflate로 압축한 리소스를 클라이언트가 해석할 수 있는 뜻

If-Modified-Since

  • 페이지가 수정되었으면 최신 버전 페이지 요청을 위한 필드.
  • 만일 요청한 파일이 이 필드에 지정된 시간 이후로 변경되지 않았다면, 서버로부터 데이터를 전송받지 않습니다. 
    • 이 경우 notmodifed(304상태코드를 전송받음)

IF-None-Match

  • 서버보고 ETag가 달라졌는지 검사해서 Etage가 달라진 경우에만 컨텐츠를 새로 내려주라는 뜻
  • 만약 ETag가 같다면 서버는 304 Not Modifided를 응답해서 캐시를 그대로 사용

User-Agent

  • 클라이언트 소프트웨어(브라우저, os등)의 이름과 버전 등. 

Host

  • 요청을 한 서버의 Host

Refer

  • 위의 요청 헤더에는 나와 있지 않지만 이 정보도 자주 등장하는 필드
  • 특정 페이지에서 링크를 클릭하여 요청을 하였을 경우에 나타나는 필드로써 링크를 제공한 페이지를 나타냄

Cookie

  • 위의 요청 헤더에는 나와 있지 않지만 이 정보도 자주 등장하는 필드
  • 웹서버가 클라이언트에 쿠키를 저장해 놓았다면 해당 쿠키의 정보를 이름-값 쌍으로 웹서버에 전송





HTTP/1.1 200 OK

Server: Microsoft-IIS/5.1

X-Powered-By: ASP.NET

Date: Fri, 21 Jul 2006 05:32:01 GMT

Content-Type: text/html

Accept-Ranges: bytes

Last-Modified: Fri, 21 Jul 2006 05:31:52 GMT

ETag: "689cb7f886acc61:a1b"

Content-Length: 101

응답 헤더

HTTP/1.1 200 OK

  • HTTP버전과 응답 코드(200 성공)

Server 

  • 웹서버 정보를 나타냄

Date

  • 현재 날짜

Content-Type

  • 요청한 파일의 MIME 타입을 나타냄
  • Text/html은 Text 중 html파일임을 나타냄

Last-Modified

  • 요청한 파일의 최종 수정일

Content-Length

  • 헤더 이후 이어지는 데이터의 길이(바이트 단위)
  • 이어지는 데이터 : 요청한 파일의 데이터

ETag

  • 브라우저가 캐시된 파일을 이용할 것인지 아니면 서버로부터 다시 가져와서 할지를 결정하게 하는 헤더
  • 캐쉬 업데이트 정보를 위한 임의의 식별 숫자

출처









댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?