HTTP Header

Casper·2023년 8월 14일
0
post-thumbnail
  • HTTP Header란?

    HTTP 프로토콜을 사용하여 웹 클라이언트와 서버간의 통신에서 요청과 응답 본문 외에 해당 요청/응답의 메타 정보를 포함하는 정보입니다.
    각 필드는 key/value 형태로 이루어져 있으며 요청과 응답을 처리하는 데 중요한 역할을 합니다.
    사용자 지정 전용 헤더는 'X-' 접두사와 함께 사용되어 왔지만 RFC6648 에서 비표준 필드가 표준이 되었을 때의 발생한 불편함 때문에 2012년 6월에 더 이상 사용하지 않게 됩니다.
    각 브라우저와 웹 서버는 몇KB 정도로 헤더를 제한하고 있으며 이를 초과할 시 '413 Entity Too Large'가 반환되게 됩니다.
    HTTP/2, HTTP/3과 같은 프로토콜은 헤더 압축 및 다중화를 통해 이러한 제약을 완화시키기 위한 방법을 제공합니다.

  • Http Header 구조

    • 각 헤더는 개행문자로 구분하며 헤더의 KEY/VALUE는 ':'로 구분합니다.

      GET /path/to/resource HTTP/1.1
      Host: example.com
      User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
      Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8

  • Request Header Field (표준)

필드명설명예시
Accept허용 가능 응답 데이터 유형Accept: text/html
Accept-Charset허용 가능 문자 집합Accept-Charset: utf-8
Accept-Datetime허용 가능 시간 정보.
원본 데이터의 과거 시간에 접근할 것임을 나타냄.
Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT
Accept-Encoding허용 가능 인코딩 목록Accept-Encoding: gzip, deflate
Accept-Language허용 가능 언어Accept-Language: en-US
Accept-Control-Request-MethodCORS 요청 메소드Access-Control-Request-Method: GET
AuthorizationHTTP 인증 자격 증명Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control요청,응답 체인을 따라 모든 캐싱 메커니즘이 준수해야하는 지시사항Cache-Control: no-cache
Content-Encoding본문 데이터 인코딩 유형Content-Encoding: gzip
Content-Length요청 본문 길이(Byte)Content-Length: 348
Content-Type요청 본문 데이터 유형(POST,PUT)Content-Type: application/x-www-form-urlencoded
Cookie서버가 설정한 쿠키 목록Cookie: $Version=1; Skin=new;
Date메세지 시작 날짜 및 시간Date: Tue, 15 Nov 1994 08:12:31 GMT
ForwardedHTTP 프록시를 통해 웹서버 연결할 때 클라이언트의 원래 정보Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43 Forwarded: for=192.0.2.43, for=198.51.100.17
From요청자 전자 메일 주소From: user@example.com
Host서버의 도메인 및 TCP 포트 번호.
표준 포트일 경우 생략 가능
Host: en.wikipedia.org:8080
If-Modified-Since내용이 수정되지 않은 경우 '304 Not Modified' 허용If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
If-None-Match일치하지 않은 경우 '304 Not Modified' 허용If-None-Match: "737060cd8c284d8af7ad3082f209582d"
OriginCORS 공유 요청Origin: http://www.example-social-network.com
Pragma요청,응답 체인을 따라 다양한 영향을 미칠 수 있는 필드.
HTTP/1.1 버전의 Cache-Control 헤더가 생기기 전 그것과 동일한 역할을 하는 대용 헤더로 사용
Prefer: return=representation
Proxy-Authorization프록시 연결 인증 자격 증명Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range엔티티의 일부 Byte만 요청Range: bytes=500-999
Referer요청한 사이트의 이전 링크Referer: http://en.wikipedia.org/wiki/Main_Page
User-Agent사용자 에이전트User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0
Upgrade서버에 다른 프로토콜로 업그레이드 하도록 요청Upgrade: h2c, HTTPS/1.3, IRC/6.9, RTA/x11, websocket
  • Response Header Field (표준, 공통 필드 제외)
필드명설명예시
Age엔티티가 프록시 캐시에 있던 기간(초)Age: 12
Allow지정한 리소스에 유효한 메서드Allow: GET, HEAD
Content-Disposition이진 형식의 MIME 유형에 대해 '파일 다운로드' 대화상자를 열거나 동적 내용에 대한 피일 이름을 제안Content-Disposition: attachment; filename="fname.ext"
Content-Location반환된 데이터의 대체 위치Content-Location: /index.htm
ETAG리소스의 특정 버전에 대한 식별자ETag: "737060cd8c284d8af7ad3082f209582d"
Expires응답이 오래된 것으로 간주되는 시간 정보 제공Expires: Thu, 01 Dec 1994 16:00:00 GMT
Last-Modified요청된 개체의 마지막 수정 날짜Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
Link다른 리소스와 유형화된 관계를 표현Link: ; rel="alternate"
Location리디렉션 또는 새 리소스가 생성된 경우 사용Location: http://www.w3.org/pub/WWW/People.html
Public-Key-PinsHTTP 공개키 피닝.웹사이트 인증 TLS 인증서 해시 발표Public-Key-Pins: max-age=2592000; pin-sha256="E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=";
Retry-After엔티티를 일시적으로 사용할 수 없는 경우 클라이언트가 나중에 다시 시도하도록 지시.Retry-After: Fri, 07 Nov 2014 23:59:59 GMT
Server서버 이름Server: Apache/2.4.1 (Unix)
Set-CookieHTTP 쿠키 목록Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Warning엔티티 본문에서 발생할 수 있는 문제에 대한 일반적인 경고Warning: 199 Miscellaneous warning
WWW-Authenticate요청된 엔티티에 액세스하는데 사용할 인증 체계WWW-Authenticate: Basic
profile
Emotional Developer

0개의 댓글