HTTP 헤더 (1)

루밤·2021년 7월 28일
0

HTTP

목록 보기
7/8
post-thumbnail
  1. 표현
  2. 협상
  3. 전송 방식
  4. 일반 정보
  5. 특별한 정보
  6. 인증
  7. 쿠키

http header-field 구조
field-name ":" OWS field-value OWS (OWS:띄어쓰기 허용)


표현 (Representation)

표현헤더 - 전송, 응답 둘다 사용

  • Content-Type: 표현 데이터의 형식
    ex) text/html; charset=utf-8, application/json, image/png

  • Content-Encoding: 표현 데이터의 압축 방식
    ex) gzip, deflate, identity(압축 x)

  • Content-Language: 표현 데이터의 자연 언어
    ex) ko, en, en-US

  • Content-Length: 표현 데이터의 길이 (바이트 단위)
    Transfer-Encoding(전송 코딩)을 사용하면 Content-Length를 사용하면 안된다.



협상(콘텐츠 네고시에이션)

클라이언트가 선호하는 표현 요청 (요청시에만 사용)

  • Accept: 클라이언트가 선호하는 미디어 타입
  • Accept-Charset: 클라이언트가 선호하는 문자 인코딩
  • Accept-Encoding: 클라이언트가 선호하는 압축 인코딩
  • Accept-Language: 클라이언트가 선호하는 자연 언어
  1. 협상 우선순위 1
    0~1 사이의 숫자로 우선순위를 표현하고 클수록 높은 우선순위를 가진다. (생략시 1)
    ex) Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7

  2. 협상 우선순위 2
    구체적인 것이 우선한다.
    ex) 1) text/plain;format=flowed, 2) text/plain, 3) text/*, 4) */*

  3. 협상 우선순위 3
    구체적인 것을 기준으로 미디어 타입을 맞춘다.



전송 방식

  • 단순 전송
    Content의 길이를 알고있을때, 단순히 Content-length에 정확한 값을 입력

  • 압축 전송
    데이터를 압축하여 보낼 때, 압축 정보와 압축된 길이를 입력
    Content-encoding 정보 + Content-length

  • 분할 전송
    데이터의 용량이 클 경우 분할해서 데이터를 쪼개서 보냄, content-length가 없으며, 마지막에 0\r\n으로 끝났음을 알려준다.
    ex)
    Transfer-Encoding: chunked

    5
    Hello

    5
    World

    0
    \r\n

  • 범위 전송
    범위를 지정해서 요청 가능
    ex) 요청) Range: bytes=1001-2000   응답) Content-Range: bytes 1001-2000 / 2000



일반 정보

  • From
    유저 에이전트의 이메일 정보

  • Referer
    이전 웹 페이지 주소 (유입 경로 분석 가능), A->B로 이동하는 경우 B를 요청할 때 Referer: A를 포함해서 요청한다.

  • User-Agent
    클라이언트의 애플리케이션 정보(웹 브라우저 정보 등)

  • Server
    요청을 처리하는 ORIGIN 서버의 소프트웨어 정보

  • Date
    메시지가 발생한 날짜와 시간, 응답에서만 사용한다.



특별한 정보

  • Host
    요청한 호스트 정보(도메인), 요청에서 사용하고 필수 정보이다. 올바른 도메인을 찾아가기 위해 사용된다.

  • Location
    페이지 리다이렉션에 쓰이고, Location 헤더에 적힌 위치에 자동으로 요청을 보낸다.

  • Allow
    허용 가능한 HTTP 메서드, 405(Method Not Allowed)에서 응답에 포함해야하고, 사용 가능한 메서드를 보내준다.

  • Retry-After
    유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
    503(Server Unavailable): 서비스가 언제까지 불능인지 알려줄 수 있다.
    ex) Retry-After: Fri, 31 Dec 1999 23:59:59 GMT (날짜표기)
         Retry-After: 120 (초단위 표기)



인증

  • Authorization
    클라이언트 인증 정보를 서버에 전달

  • WWW-Authenticate
    리소스 접근시 필요한 인증 방법 정의, 401 Unauthorized 응답과 함께 사용



쿠키

  • Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답)

  • Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달

    참고) 쿠키는 서버측에서 생성해서 클라이언트에게 보내주고, 클라이언트는 쿠키를 저장해두었다가 항상 서버로 같이 전송한다. 그래서 네트워크 트래픽을 추가 유발할 수 있으므로 최소한의 정보만 사용(세션 id, 인증 토큰 등)해야 한다.

    쿠키의 구조는 sessionId, expires, path, domain, Secure로 구성되어 있다.



해당 포스팅은 김영한님의 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식"를 수강하고 배운 내용을 정리한 글입니다.  

0개의 댓글