[HTTP] HTTP 헤더 - 1 (Content, Accept, 전송 정보)

Enochkon·2022년 9월 26일
0

네트워크

목록 보기
7/9

HTTP 헤더

HTTP 헤더

HTTP 헤더의 용도

http 전송에 필요한 모든 정보들(메타데이터)을 담고 있음.
ex) 메세지 바디의 내용, 메세지 바디의 크기, 인증정보, 요청 클라이언트 등등

HTTP 헤더의 종류

표현

표현 헤더는 전송(request), 응답(response)에서 둘다 사용

  • Content-Type
    표현 데이터의 형식 설명. (미디어 타입, 문자 인코딩 등)
    ex) text/html; charset = utf-8 , application/json, image/png 등

    Content-Type: text/html;charset=UTF-8

  • Content-Encoding
    표현 데이터 인코딩, 표현 데이터를 압축하기 위해 사용. 데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축 해제
    ex) gzip, deflate, identity 등

    Content-Encoding: gzip

  • Content-Launguage
    표현 데이터의 자연 언어, 어떤 언어를 사용했는지 알 수 있음
    ex) ko(한국어), en(영어)

    Content-Language: ko

  • Content-Length
    표현 데이터의 길이. 바이트 단위이다.

    Content-Length: 5

협상

클라이언트가 선호하는 표현 요청.

  • Accept : 클라이언트가 선호나는 미디어 타입 전달
  • Accept-Charset : 클라이언트가 선호하는 문자 인코딩
  • Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
  • Accept-Language : 클라이언트가 선호하는 자연 언어.

우선순위 설정
Quality Values(q)

  1. 우선순위 값을 사용함. 0~1사이를 사용하고 클수록 높은 우선순위.

    Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7

    이런 식으로 표현되어 있으면
    ko-KR;q=1 (q생략시 1)
    ko-;q=0.9
    en-US;q=0.8
    en;q=0.7
    이런식으로 위에서 부터 높은 우선순위를 부여 받아 응답시켜준다.

  2. 구체적인 것을 우선한다. -> 더욱 구체적으로 설명되어 있는 것을 우선한다.

    text/, text/plain, text/plain;format=flowed, /*

    text/plain;format=flowed
    text/plain
    text/*
    */* 의 순서를 가지게 된다.
    -> 또한 이 순서를 따라 들어오는 데이터의 미디어 타입을 맞춘다.

전송 방식

  • 단순 전송
    • 요청하고 응답을 줄때 Content-Length를 지정해서 준다 (컨텐츠 길이를 알 수 있을 때 사용)
  • 압축 전송
    • 파일을 압축해서 전송 (요청 시 Content-Encoding이 필수로 포함되어 있어야 함.)
  • 분할 전송
    • Transfer-Encoding : chunked

      즉 요청을 나눠서 보내는 전송 (용량이 큰 데이터를 전송할 때 사용, Content-Length를 사용할 수 없음. 그 이유는 한번 보낼때마다의 데이터 길이를 예상할 수 없기 때문)

  • 범위 전송 (Range, Content-Range)
    • 데이터의 일부분을 받을 때 사용하는 전송 방법. ex) 어떤 url의 데이터의 100에서 200byte만큼만 보내줘.

참조

https://www.inflearn.com/course/http-웹-네트워크
https://developer.mozilla.org/ko/docs/Web/HTTP

0개의 댓글