프로필사진
DevOps 부트캠프 기록일지
DevOps_04_김재환
11_Study(Headers)
11_Study(Headers)

2023. 3. 22. 19:57부트캠프/DevOps (TIL)

  • HTTP 프로토콜의 요청과 응답은 헤더(header, 부가 정보)와 바디(body, 실제 데이터)로 구성
  • HTTP의 헤더와 바디는 개행문자인 '\r\n'으로 구분
    • 헤더와 바디 사이에 한 개의 빈 줄(line)이 존재
  • HTTP 헤더는 요청과 응답에 공통으로 사용되는 공통 헤더 / 요청 헤더 / 응답 헤더로 구분

 

HTTP 공통 헤더 주요 항목

Data

- HTTP 메시지를 생성한 일시- RFC 1123을 따름

ex) Date : Tue, 19 Nov 2019 04:13:24 GMT

 

Connection

- Keep-Alive를 설정

ex) Connection : keep-alive

 

Cache-Control

- Cache 속성을 설정

  • no-store : 캐시를 저장하지 않음
  • no-cache : 서버에 확인 후 캐시 사용
  • must-revalidate : 만료된 캐시를 서버에 확인
  • public : 공유 캐시에 저장
  • private : 특정 사용자 환경에서만 저장
  • max-age : 캐시 유효 기간 명시

 

Content-Type

- 이미지, 오디오, 텍스트 등 콘텐츠 종류를 지정- 텍스트일 경우 문자 인코딩 방식을 지정 가능

ex) Content-Type : text/html; charset=utf-8

 

Content-Encoding

- 데이터의 압축 방식을 지정

ex) Content-Encoding : gzip, deflate

 

Content-Length

- 전송할 데이터의 크기를 지정- 전송할 데이터 = body

ex) Content-Lenth : 34

 

HTTP 요청 헤더 주요 항목

Method, URL, HTTP 버전

- GET, POST 등 HTTP 메소드

- 요청하는 URL

- HTTP 버전 정보

ex) Get /example/test.html HTTP/1.1

 

Accept

- 서버로부터 전송 받고자 하는 콘텐츠의 MIME 타입을 지정

- 이를 통해 웹 브라우저에 최적화된 타입의 데이터 사용 가능

  • Accept-Charset : 문자 인코딩 타입
  • Accept-Language : 지원 언어
  • Accept-Encoding : gzip 등 압축 형식

ex) Accept : image/gif, image/png

ex) Accept-Language : ko, en-us

 

If-Modified-Since

- 지정한 날짜 이후로 변경된 경우에만 수신하도록 지정

ex) If-Modified-Since : Mon, 18 Jul 2016 12:15:00 GMT

 

User-Agent

- 웹 브라우저(웹 클라이언트)의 정보를 지정

ex) User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36

 

 

Cookie

- 웹 서버의 요청에 의해 클라이언트에 저장해 놓은 쿠키를 키와 값의 쌍으로 전송- 대표로 Session ID가 있음

 

Host

- 대상 서버의 도메인 이름으로 포트 정보 포함 가능

ex) Host : www.abcd.com

 

Origin

- 해당 요청이 어느 주소에서 시작되었는지 명시

 

Referer

- 이번 요청 이전의 페이지 주소를 지정

ex) Referer : https://www.google.com/

 

HTTP 응답 헤더 주요 항목

HTTP 버전, 응답 코드

- HTTP 버전 정보- HTTP 프로토콜에 정의된 응답코드

ex) HTTP/1.1 200 OK

 

Server

- 웹 서버의 정보를 명시

ex) Server : Apache/2.2.24

 

Location

- 응답코드 301, 302 리다이렉션 상태에서 위치 정보를 지정

 

Set-Cookie

- 클라이언트에 저장할 쿠키 정보를 지정

  • Expires : 만료일
  • Secure : HTTPS에서만 사용
  • HttpOnly : 스크립트에서 접근 불가
  • Domain : 같은 도메인에서만 사용

위에 것들을 함께 설정 가능

 

Expires

- 해당 리소스의 유효 일시를 지정

 

Allow

- 응답 코드 405 (Method Not Allowed) 상태에서 서버가 제공할 수 있는 HTTP 메서드를 지정

 

표현 헤더(Representation Headers)

 

표현 헤더(Representation Header)는 HTTP 응답 메시지의 일부로, 서버에서 클라이언트로 전송되는 데이터의 형식을 정의합니다. 즉, 클라이언트가 요청한 자원의 데이터 타입, 언어, 압축 방식 등을 지정합니다. 이를 통해 클라이언트는 서버로부터 받은 데이터를 올바르게 처리할 수 있습니다.

다음은 표현 헤더의 대표적인 종류와 간단한 설명입니다.

  • Content-Type: 데이터의 형식을 나타냅니다. 예를 들어, text/html, application/json, image/png 등이 있습니다.
  • Content-Language: 데이터의 언어를 나타냅니다. 예를 들어, en-US, ko-KR 등이 있습니다.
  • Content-Encoding: 데이터의 압축 방식을 나타냅니다. 예를 들어, gzip, deflate 등이 있습니다.
  • Content-Length: 데이터의 크기를 나타냅니다. 예를 들어, 1024 bytes 등이 있습니다.
  • Content-Disposition: 데이터를 어떻게 처리할지 지정합니다. 예를 들어, inline(브라우저에 바로 표시), attachment(파일로 다운로드) 등이 있습니다.

이 외에도 많은 표현 헤더가 있으며, 이들을 조합하여 다양한 방식으로 데이터를 전송할 수 있습니다. 표현 헤더는 HTTP 요청과 응답에서 모두 사용되므로, 웹 애플리케이션 개발에서 중요한 개념 중 하나입니다.

 

콘텐츠 협상 헤더

 

콘텐츠 협상 헤더(Content Negotiation Header)는 HTTP 요청에서 사용되며, 클라이언트와 서버 간에 가장 적합한 콘텐츠를 결정하는 방법을 지정합니다. 이를 통해 클라이언트는 서버로부터 적절한 형식의 데이터를 받을 수 있습니다.

다음은 콘텐츠 협상 헤더의 대표적인 종류와 간단한 설명입니다.

  • Accept: 클라이언트가 원하는 콘텐츠 형식을 지정합니다. 예를 들어, text/html, application/json, image/png 등이 있습니다.
  • Accept-Language: 클라이언트가 원하는 언어를 지정합니다. 예를 들어, en-US, ko-KR 등이 있습니다.
  • Accept-Encoding: 클라이언트가 원하는 압축 방식을 지정합니다. 예를 들어, gzip, deflate 등이 있습니다.

서버는 클라이언트가 요청한 콘텐츠 형식과 서버에서 제공할 수 있는 콘텐츠 형식을 비교하여 가장 적합한 형식을 선택합니다. 예를 들어, 클라이언트가 "Accept: text/html, application/json" 헤더를 보내면, 서버는 "text/html" 형식의 콘텐츠를 우선으로 제공하며, 이 형식이 없을 경우 "application/json" 형식을 제공합니다.

콘텐츠 협상 헤더는 웹 애플리케이션 개발에서 매우 중요한 개념 중 하나입니다. 이를 통해 클라이언트는 자신에게 적합한 형식의 데이터를 받을 수 있으며, 서버는 클라이언트의 요청에 적절히 응답함으로써 사용자 경험을 개선할 수 있습니다.

 

출처

https://bonita-sy.tistory.com/entry/

https://en.wikipedia.org/wiki/List_of_HTTP_header_fields

'부트캠프 > DevOps (TIL)' 카테고리의 다른 글

16_Study(관계형DB, 비관계형DB)  (0) 2023.03.29
11_Study(RESTAPI)  (0) 2023.03.22
11_Study(쿠키)  (0) 2023.03.22
10_Study(Branch)  (0) 2023.03.21
09_Study(git 설정과 명령어)  (0) 2023.03.20