HTTP Header Element, HTTP Header Field   HTTP 헤더 항목

(2025-04-14)

HTTP 요청 헤더 항목, HTTP 응답 헤더 항목, HTTP 일반 헤더 항목, HTTP 엔터티 헤더 항목, User-Agent


1. HTTP 헤더 내 요청 헤더 (Request Header) 항목

  ㅇ 요청 헤더HTTP 요청 메세지 내에서만 나타나며 가장 방대함

  ㅇ 주요 항목들
     - Host : 요청하는 호스트에 대한 호스트명포트번호 (*필수*)
        . (HTTP/1.1 이후부터 Host 필드는 필수 항목이 되어서, 웹브라우저는 이를 반드시 포함 필요)
           .. 例) Host: www.example.com
        . 만일, HTTP/1.1 명시해 놓고, Host 필드 생략하면, 
           .. 웹서버는 400 Bad Request (요청 오류)로 응답하는 것이 원칙임
        . 이 Host 필드에 의해, 가변성을 부여함으로써, 
           .. 동일 IP 주소를 갖는 단일 서버에, 여러 사이트를 구축 가능 (Virtual Hosting)
        . Host 필드에는, 도메인명호스트명 모두를 포함하는 전체 URI(FQDN) 지정 필요
           .. 또한, 포트번호도 명시 가능 (단, 80번 포트는 생략 가능)
           .. 例) Host: www.example.com:8080

     - From : 클라이언트 사용자 메일 주소 
        . 주로, 검색엔진 웹로봇의 연락처 메일 주소를 나타냄
           .. 例) From: crawler@searchengine.com
        . 때로는, 이 연락처 메일 주소를 User-Agent 항목에 두는 경우도 있음

     - Cookie : 클라이언트가 보관 중인 쿠키 정보서버에 전달
        . 즉, 기존에 서버에 의해 Set-Cookie로 클라이언트에게 설정된 쿠키 정보를 보냄
           .. 例) Cookie: session_id=abc123; theme=dark;
        . [참고] ☞ 쿠키(Cookie), PHP 세션 참조

     - Referer : 바로 직전에 방문한 URL ( 링크 주소) (리퍼러)
        . (Referer : 틀린 영어, Referrer : 맞는 영어)
           .. 例) Referer: https://www.google.com/search?q=http+header
        . 만일, URL주소창에서 직접 입력하거나, 북마크 상에서 선택하는 경우, 아래 처럼 알려줌
           .. 例) Referer: about:blank

     - User-Agent : 클라이언트 소프트웨어(웹브라우저) 명칭 및 버전 정보
        . 例) User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
              like Gecko) Chrome/122.0.0.0 Safari/537.36

     * (다음 4개는 주로 HTTP 메세지 본문의 속성 또는 내용 협상용 항목들 임)
     - Accept          : 클라이언트 자신이 원하는(수용가능한) 미디어 타입 및 우선순위를 알려줌
        . 텍스트(text/html,text/plain,...),이미지(image/jpeg,...) 등
        . 例) `Accept: */*` => 어떤 미디어 타입도 가능
        . 例) `Accept: image/*` => 모든 이미지 유형
     - Accept-Charset  : 클라이언트 자신이 원하는 문자 집합
        . 例) Accept-Charset: utf-8, iso-8859-1;q=0.5
     - Accept-Encoding : 클라이언트 자신이 원하는 문자 인코딩 방식
        . 例) Accept-Encoding: deflate, gzip => 원하는 압축 방식 지정
           .. Content-Encoding: gzip => 요청한 압축 방식에 대한 긍정 응답
     - Accept-Language : 클라이언트 자신이 원하는 가능한 언어
        . 例) Accept-Language: en-US,en;q=0.9,ko;q=0.8 
     * 위 각각이 아래 4.번항의 HTTP 엔터티 헤더 항목 중 Content-xxx와 일대일로 대응됨
        . (클라이언트 요청)  ⇔  (웹서버 응답) 
        . Accept  ⇔  Content-Type
        . Accept-Charset  ⇔  Content-Type charset-xxx
        . Accept-Encoding  ⇔  Content-Encoding
        . Accept-Language  ⇔  Content-Language

     - If-Modified-Since : 제시한 일시 이후로만 변경된 리소스를 취득 요청
        . 즉, 리소스가 특정 날짜 이후 변경되었을 경우만 응답
           .. 例) If-Modified-Since: Wed, 10 Apr 2024 10:00:00 GMT


2. HTTP 헤더 내 응답 헤더 (Response Header) 항목

  ㅇ 특정 유형의 HTTP 요청이나 특정 HTTP 헤더를 수신했을때, 이에 응답 함

  ㅇ 주요 항목들
     - Server : 웹서버 소프트웨어 정보를 나타냄
        . 例) Server: Apache/2.4.46 (Unix)

     - Set-Cookie : 웹서버측에서 클라이언트에게 세션 쿠키 정보를 설정
        . `속성이름(attribute)/속성값(value);` 형태로 다수 정보들이 설정됨
        . RFC 2965에서 규정됨
        . [참고] ☞ 쿠키(Cookie), PHP 세션 참조

     - Age : 리소스가 캐시시간 (초 단위)
        . 例) Age: 120

     - ETag : 리소스의 고유 식별자(버전)
        . 例) ETag: "686897696a7c876b7e"

     - Proxy-authenticate : 프록시 서버 인증 정보 요청
        . 例) Proxy-Authenticate: Basic realm="Access to internal site"

     - Allow : 해당 엔터티에 대해 서버측에서 지원 가능한 HTTP 메소드리스트를 나타냄
        . 때론, HTTP 요청 메세지HTTP 메소드 OPTIONS에 대한 응답용 항목 임
           .. (OPTIONS : 웹서버측 제공 HTTP 메소드에 대한 질의)
        . 例) Allow: GET,HEAD => 웹서버측이 제공가능한 HTTP 메서드는 GET,HEAD 뿐임을 알림

     - X-Powered-By : 서버시스템 이름을 알리기 위해 반환
        . RFC 규격 표준은 아니지만, 사실상의(de-facto) 표준


3. HTTP 헤더 내 일반 헤더 (General Header) 항목

  ㅇ 요청 및 응답 메세지 모두에서 사용 가능한 일반 목적의(기본적인) 헤더 항목
     - 즉, HTTP 메세지 내 바디(몸체) 내용과는 직접 관련 없음   

  ㅇ 주요 항목들

     - Date  : 메세지를 생성한 일시
        . RFC 1123에서 규정됨
        . 例) Date: Sat, 2 Oct 2018 02:00:12 GMT

     - Connection : 다소 모호한 복잡성 있음
        . 사용 1) Connection: keep-Alive => 현 TCP 커넥션 유지를 원함
           .. HTTP/1.0 에서 만 사용되던 형식
           .. HTTP/1.1 에서는 예전 의미를 대체로 인식하지만,
           .. 그 기능 자체(지속 커넥션)는, HTTP/1.1에서 기본 제공되므로, 굳이 언급 필요 없음
           .. 사실상, `Connection: keep-Alive`,`Keep-Alve: xxx` 헤더 항목들은 무시됨 
        . 사용 2) Connection: `token list`
           .. 중계 연결(프록시)에 대한 옵션 설정
           .. 중계 중인 인접 HTTP 커넥션 간에 만 적용될 옵션 리스트들로써,
           .. 다음 커넥션에 전달되어서는 안됨
           .. 해당 커넥션 토큰들 각각을 쉼표로 구분시킨 리스트 (token list)
        . 사용 3) Connection: close => 현 커넥션 직후에 TCP 접속을 끊는다는 것을 알림
           .. Keep-Alive 형식의 연결을 한 쪽에서 이를 명시적으로 끊을려고 할 때 사용
           .. 또한, 오류 탐지 (Content-Length 불일치 등) 강제 종료, 타임아웃으로 연결을 끊게됨
           .. 타임아웃 例로는, 파이어폭스 웹브라우저 : 115초, 아파치 2.2 웹서버 : 5초 등

     - Cache-Control : 캐시 관련 지시어
        . 例) Cache-Control: no-cache, no-store, must-revalidate

     - Pragma : HTTP/1.0용 캐시 지시어 (호환용)
        . 例) Pragma: no-cache

     - Trailer : 청크 인코딩에서 추가로 따라올 헤더 목록


4. HTTP 헤더엔터티/개체 헤더 (Entity Header) 항목

  ㅇ 요청 및 응답 메세지 모두에서 사용 가능

  ㅇ 주로, 바디 내용이 존재할 때, 이에대한 세부 정보를 나타내는데에 사용됨

  ㅇ 특히, 선택적인 개체(콘텐츠,본문,리소스 등) 그 자체를 설명함
     - HTTP 메세지 내 본문 및 포함된 선택적인 개체에 대한 구체적인 미디어 타입 등의 설명 등
     - HTTP 메세지는, 이미지,비디오,오디오,HTML 문서,전자메일 등의 개체들을 운반 가능

  ㅇ 주요 항목들

     - Content-Type 관련 항목     ☞ 컨텐트 타입 참조
        . Content-Type, Content-Encoding, Content-Length, Content-Disposition 등 

     - 캐시 관련 항목         ☞ HTTP 캐시 참조
        . Expires, Last-Modified 등

     - Location : 리소스가 리다이렉트된 때에 이동된 주소, 또는 새로이 생성된 리소스 주소
        . 리다이렉션 이동되는 경우에는, HTTP 상태 코드 `3xx`가 반환되며,
        . 새로 생성된 경우에는, HTTP 상태 코드 `201 Created`가 반환되며,
        . 이에따라 선택적으로, `Location:` 헤더 항목을 보내게 됨
        . 例) Location: http://www.ktword.co.kr/

     - Transfer-Encoding : 전송 인코딩 방식 (청크 전송 등)
        . 例) Transfer-Encoding: chunked
        . 동적으로 생성되어 바디 길이를 모르는 경우에 조금씩 전송 가능
        . 각 chunk 마다 그 시작에 16진수 길이를 삽입하여 chunk 길이를 알려줌


5. [참고사항]  

  ㅇ 표준 헤더 (표준 헤더)
     - 인접 두 서버(프록시 등) 간에 만 적용되며 다음 홉으로 전달되지 않는 헤더 항목들
        .. Keep-Alive, Transfer-Encoding, TE, Connection, Trailer, Upgrade,
           Proxy-Authorization, Proxy-Authenticate

  ㅇ RFC 표준 
     - RFC 4229 : "HTTP Header Field Registrations" (HTTP 헤더 필드 등록)
     - RFC 7230~7235 : HTTP/1.1 메시지 문법, 헤더, 캐시, 인증 등

HTTP 헤더
1. HTTP 헤더   2. HTTP 헤더 항목   3. 컨텐트 타입  

"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"
     [정보통신기술용어해설]        편집·운영 (차재복)          편집 이력          편집 격려 (소액 후원)
[HTTP 헤더]1. HTTP 헤더   2. HTTP 헤더 항목   3. 컨텐트 타입  

  1. Top (분류 펼침)      :     1,607개 분류    6,634건 해설