본문 바로가기

CS/네트워크

HTTP 헤더

공통헤더

request, response에 모두 사용되는 헤더이다.

 

  • Date
    • HTTP 메시지가 만들어진 시각. 자동생성된다.
    • ex) Date: Thu, 12 Jul 2018 03:12:27 GMT

  • Connection
    • HTTP 1.1을 사용한다면 default로 keep-alive로 설정되어 있다. 사실상 아무 의미가 없다. HTTP 2에서는 해당 형식이 제외되었다.
    • ex) Connection: keep-alive
  • Cache-Control
    • 중요한 부분이다. 이 부분과 관련해서는 추후 포스팅할 예정이다.
    • 304를 받았다면 이 부분을 의심해보자.
    • Cache-Control 속성은 누가 응답을 어떤 조건에서, 얼마나 캐시할 수 있는지 정의한다.
  • Content-Length
    • request, response 메시지의 본문 크기를 바이트 단위로 표시해준다. 메시지 크기에 따라 자동 생성된다.
    • ex) Content-Length: 88052

  • Content-Type
    • 메시지 타입을 알려준다.
    • 컨텐츠 타입(MIME), 문자열 인코딩(utf-8 등)을 알려준다.
    • Accept 헤더, Accept-Charset 헤더와 대응된다.

  • Content-Language
    • 사용자의 언어를 의미한다.
    • 즉, 요청이나 응답의 언어가 아니다.
    • 한국인이 독일의 사이트에 접속하더라도 Content-Language는 ko-KR일 수 있다.
  • Content-Encoding
    • 압축된 방식이다.
    • response data를 br, gzip, deflate 등의 알고리즘으로 압축해서 보내면 브라우저가 알아서 해제하여 사용한다.

요청헤더

  • Host
    • 서버의 도메인 네임(포트 포함)
    • 반드시 하나가 존재해야 한다.

  • User-Agent
    • 현재 사용자가 어떤 클라이언트(운영체제, 브라우저 등)를 이용해 요청을 보냈는지 알려준다.
    • 즉, 이것을 활용해 접속자 통계를 산출할 수 있다.

  • Accept
    • 어떤 타입의 데이터를 원하는지 명시할 때 사용한다.
    • 콤마로 여러 타입을 동시에 적어줄 수도 있고 *(와일드카드)를 활용할 수도 있다.

  • Authorization
    • 인증 토큰을 서버로 보낼 때 사용하는 헤더이다.
    • API 요청 등을 할 때 토큰이 없으면 거절당하기 때문에 이 때 사용한다.
    • 토큰의 종류를 먼저 알리고 그 뒤에 실제 토큰 문자를 전송한다.
    • Authorization: Bearer XXXXXXXXXXXXX
  • Origin
    • 요청이 어느 주소에서 시작되었는지 나타낸다.
    • 요청을 보낸 주소와 받는 주소가 다르면 CORS 문제가 발생한다.
    • CORS: Cross Origin Resource Sharing: 도메인/포트가 다른 서버로 클라이언트가 요청했을 때 브라우저가 보안상의 이유로 API를 차단하는 문제
  • Referer
    • 현재 페이지 이전의 주소가 담겨 있다.
  • Cookie
    • 서버로부터 받은 쿠키를 다시 서버로 보낼 때 사용한다.

응답헤더

  • Access-Control-Allow-Origin
    • 요청을 보내는 front 주소와 받는 backend 주소가 다르면 CORS 에러가 발생한다. 이를 방지하기 위해 서버에서 해당 헤더에 Front 주소를 적어주어야 한다. 
    • 프로토콜, 서브도메인, 도메인, 포트 중 하나만 달라도 CORS 에러가 발생한다. *(와일드카드)를 활용할 수 있다. 하지만 그만큼 보안이 취약해진다.
  • Allow
    • Access-Control-Allow-Orgin과 비슷하지만, CORS 요청 외에도 적용된다는 것에 차이점이 있다.
    • GET은 되고 POST는 허용하지 않는 경우, 405 Method Not Allowed 에러를 응답하면서 헤더에 GET을 같이 보내면 된다. 즉, GET 요청만 받겠다는 의미이다.
  • Content-Disposition
    • response body를 브라우저가 어떻게 표시해야할지 알려주는 헤더이다.
  • Location
    • 300번대 응답이나 201 Created 응답일 때 어느 페이지로 이동할지 알려준다.
  • Content-Security-Policy
    • 다른 외부 파일들을 불러오는 경우, 차단할 소스와 불러올 소스를 명시한다.
  • Server
    • 사용하고 있는 웹서버의 소프트웨어에 대한 정보를 포함한다.
  • Set-Cookie
    • 쿠키를 생성하고 브라우저에 보낼 때 사용한다.

 

'CS > 네트워크' 카테고리의 다른 글

로드밸런싱  (0) 2021.06.23
Authentification과 Authorization의 차이  (0) 2021.05.25
GET과 POST  (0) 2021.05.18
TCP의 3 way handshake와 4 way handshake  (0) 2021.05.17
TCP/UDP의 Header  (0) 2021.05.17