HTTP 헤더 이해

Dec 29 2022
HTTP 헤더에 대한 지식을 새로 고쳐야 하고 메모하기로 결정했습니다. 다음은 HTTP 헤더에 대한 제 참고 사항입니다.

HTTP 헤더에 대한 지식을 새로 고쳐야 하고 메모하기로 결정했습니다. 다음은 HTTP 헤더에 대한 제 참고 사항입니다.

HTTP 헤더란 무엇입니까?

  • HTTP 헤더는 요청 또는 응답에 대한 추가 컨텍스트 및 메타데이터를 전달하는 HTTP 요청 또는 응답의 필드입니다.
  • 헤더는 대소문자를 구분하지 않습니다.
  • 이러한 HTTP 통신의 필수적인 부분입니다.

요청 헤더 :

  • 가져올 리소스에 대한 정보를 포함합니다.
  • 요청에 나타날 수 있는 모든 헤더를 사양에서 요청 헤더 라고 하는 것은 아닙니다 . 예를 들어 헤더를 표현 헤더Content-Type 라고 합니다 .
  • 응답에 대한 정보 보유(예: 위치)
  • MIME 유형 또는 적용된 인코딩/압축 과 같은 리소스 본문에 대한 정보를 포함합니다 .
  • 또는 Age와 같은 응답 헤더 는 응답의 더 자세한 컨텍스트를 제공하는 데 사용됩니다.LocationServer
  • 콘텐츠 길이 및 전송에 사용되는 인코딩을 포함하여 페이로드 데이터에 대한 표현 독립적인 정보를 포함합니다.
  • HTTP 요청 및 응답 메시지 모두에 존재할 수 있습니다.

캐시 및 비캐싱 프록시의 동작을 정의하기 위해 HTTP 헤더를 두 가지 범주로 나눕니다.

  • 종단 간 헤더는 요청 또는 응답의 최종 수신자에게 전송되어야 합니다.
  • 응답 의 종단 간 헤더는 캐시 항목의 일부로 저장되어야 하며 캐시 항목에서 형성된 모든 응답으로 전송되어야 합니다.
  • 홉 간 헤더는 단일 전송 수준 연결에만 의미가 있으며 캐시에 저장되거나 프록시에 의해 전달되지 않습니다.
  • 연결
  • 살아 유지
  • 공공의
  • 프록시 인증
  • 전송 인코딩
  • 업그레이드

다양한 HTTP 헤더가 있습니다. 계속해서 예를 들어 보겠습니다.

GET /home.html HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/testpage.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
Cache-Control: max-age=0

호스트: 선택적 포트 번호와 함께 요청되는 사이트에 대한 정보입니다. (기본값: 80)
User-Agent: 요청을 시작한 사용자 에이전트에 대한 정보를 포함합니다.
승인: 응답에 허용되는 특정 미디어 유형을 지정하는 데 사용됩니다. 예를 들어 브라우저는 CSS 스타일시트, 이미지, 비디오 또는 스크립트를 가져올 때 요청에 다른 값을 사용합니다.
Accept-Language: 응답이 예상되는 언어. 쉼표로 구분된 여러 언어가 허용됩니다. Accept-Encoding: 일반적으로 클라이언트가 이해할 수 있는 압축 알고리즘입니다. ( ) Referer: 클라이언트가 URL을 요청한 리소스의 주소(URI)를 지정할 수 있도록 합니다.Accept-Language: de-CH
deflate, gzip

연결: keep-alive 는 서버에 대한 모든 후속 요청이 동일한 연결을 사용함을 의미합니다. c lose 는 호스트와 서버 사이의 연결을 자동으로 닫습니다. 즉, 후속 요청은 새 TCP 연결을 설정해야 합니다.

그리고 이런 반응이 나올 수 있습니다

200 OK
Access-Control-Allow-Origin: *
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Mon, 18 Jul 2016 16:06:00 GMT
Etag: "c561c68d0ba92bbeb8b0f612a9199f722e3a621a"
Keep-Alive: timeout=5, max=997
Last-Modified: Mon, 18 Jul 2016 02:36:04 GMT
Server: Apache
Set-Cookie: mykey=myvalue; expires=Mon, 17-Jul-2017 16:06:00 GMT; Max-Age=31449600; Path=/; secure
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding
X-Backend-Server: developer2.webapp.scl3.mozilla.com
X-Cache-Info: not cacheable; meta data too large
X-kuma-revision: 1085259
x-frame-options: DENY

Access-Control-Allow-Origin: 사이트 A가 사이트 B에서 콘텐츠를 가져오려고 할 때 사이트 B는 Access-Control-Allow-Origin 응답 헤더를 보내 이 페이지의 콘텐츠가 특정 출처에서 액세스할 수 있음을 브라우저에 알릴 수 있습니다. 가장 좋은 방법은 이 헤더에 *를 제공하지 않는 것 입니다. * 대신 서버를 제공하십시오.
Etag: 엔터티 태그입니다. 리소스의 특정 버전에 대한 식별자로 사용됩니다 . 지정된 URL의 리소스가 변경되면 새 Etag값 을 생성 해야 합니다. 비교를 통해 리소스의 두 표현이 동일한지 여부를 확인할 수 있습니다. 사용법은 이 링크를 확인하세요.
전송 인코딩: 인코딩 형식을 지정합니다. chunked, compress, deflate 및 gzip과 같은 다양한 값이 있습니다. 쉼표로 구분하여 여러 값을 사용할 수 있습니다. ( Transfer-Encoding: gzip, chunked)
X-Frame-Options: 사이트에서 클릭재킹 공격을 방지하는 데 사용됩니다. 예를 들어 거부 값을 사용하면 <iframe>을 다른 사이트에 삽입할 수 없습니다. sameorigin은 동일한 원본에 임베드를 허용합니다.

상태/응답 코드:

  1. 1xx: 요청이 서버에서 수신되었으며 프로세스를 계속해야 함을 의미합니다.
  2. 2xx: 요청이 성공했음을 의미합니다.
  3. 3xx: 리디렉션을 의미합니다 :)
  4. 4xx: 이것은 요청에 잘못된 요청이 포함되어 있음을 의미합니다. 서버가 아니라 클라이언트 측에 문제가 있습니다.
  5. 5xx: 서버에 문제가 있습니다.
  • 전송 인코딩: gzip 대 콘텐츠 인코딩
  • HEAD 대 GET 성능 및 차이점
  • https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
  • https://www.freesoft.org/CIE/RFC/2068/143.htm