Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나나나

[네트워크]HTTP 헤더 본문

CS

[네트워크]HTTP 헤더

Leenk 2021. 4. 11. 23:15

HTTP란?

HTML문서와 같은 리소스를 가져올 수 있도록 해주는 프로토콜이다. 클라이언트-서버 프로토콜로 수신자 측에 의해 요청이 초기화된다.

클라이언트와 서버는 (데이터 스트림과 다르게) 개별적인 메시지 교환을 통해 통신한다.

HTTP 공통 헤더

HTTP 헤더 속 일반 헤더(General Header)에 해당하는 항목

요청과 응답 모두에서 사용 가능한 기본적이고 일반적인 헤더 항목

  • Date
    • HTTP 메시지를 생성한 일시(RFC 1123에서 규정)
  • Connection
    • 클라이언트와 서버 간 연결에 대한 옵션 설정
    • 보통 http/1.1을 사용하는데 http/2에서는 아예 사라진 항목
      • Connection: close
        • 현재 http 메시지 직후에 TCP 접속을 끊는다는 것을 알린다.
      • Connection: Keep-Alive
        • 현재 TCP 커넥션을 유지한다.
  • Cache-Control
    • 캐시 제어와 관련된 매우 중요한 헤더
      • no-store : 캐시를 저장하지 않음
      • no-cache : 모든 캐시를 쓰기 전에 서버에 해당 캐시를 사용해도 되는지 확인
      • must-revalidate : 만료된 캐시만 서버에 확인
      • public : 공유 캐시에 저장 가능
      • private : 브라우저같은 특정 사용자 환경에만 저장
      • max-age : 캐시의 유효시간을 명시
  • Pragma
    • 캐시 제어(no-cache) HTTP/1.0에서 사용했으나 HTTP/1.1에서는 상단의 캐시컨트롤이 쓰인다.
  • Content-Length
    • 요청과 응답 메시지의 본문 크기를 바이트 단위로 표시한다.
    • Content-Length: 52
  • Content-Type
    • 컨텐츠의 타입(MIME)과 문자열 인코딩(UTF-8 등)등을 명시한다.
    • 예시 : Content-Type: text/html; charset=utf-8
    • www-url-form-encoded
    • multipart/form-data
    • application/json
  • Content-Language
    • 사용자의 언어를 뜻한다. 요청이나 응답이 무슨 언어인지는 상관 없다. 페이지언어가 한국어라면 ko-KR이다.
  • Content-Encoding
    • 컨텐츠가 압축된 방식으로 응답 컨텐츠를 알고리즘을 이용해 압축해서 보내면, 브라우저가 알아서 해제해서 사용한다. 본문의 리소스에 대한 압축 방식이다.
    • Content-Encoding: gzip, deflate
  • Upgrade
    • 프로토콜 변경시에 사용한다 ex) HTTP/2.0

HTTP 요청 헤더

Request Header의 항목

  • Host
    • 서버의 도메인 네임으로 요청하는 호스트에 대한 호스트명 및 포트번호로 구성된다.
    • HTTP/1.1이후부터 필수 항목이 되었다.이에 따라 동일 IP주소를 갖는 단일 서버에 여러 사이트를 구축할 수 있다.
    • Host 필드에 도메인명 및 호스트명 모두를 포함한 전체 URI(FQDN)지정이 필요하다.
    • host: naver.com
  • User-Agent
    • 사용자가 어떤 클라이언트 소프트웨어(브라우저, 운영체제의 명칭 및 버전 정보)를 통해 요청을 보냈는지 알고 있다.
  • From
    • 클라이언트 사용자의 메일주소
    • 주로 검색엔진 웹 로봇의 연락처 메일 주소를 나타낸다. 때로는, 이 연락처 메일 주소를 User-Agent 항목에 두는 경우도 있다.
  • Cookie
    • 서버에 의해 Set-Cookie로 클라이언트에게 설정된 쿠키 정보이다. 해당 쿠키의 정보를 이름-값 쌍으로 웹 서버에 전송한다.
  • Referer
    • 바로 직전에 머물렀던 웹 링크 주소
  • If-Modified-Since
    • 페이지가 수정되었을 경우 최신 버전의 페이지를 요청하기 위한 필드이다. 만일 요청한 파일이 필드에 지정된 시간 이후로 변경되지 않으면, 서버로부터 데이터를 전송받지 않는다.
  • Authorization
    • 인증 토큰(JWT/Bearer 토큰)을 서버로 보낼 때 사용하는 헤더이다. 토큰의 종류와 실제 토큰 문자를 전송한다.
  • Origin
    • 서버로 post 요청을 보낼 때, 요청이 어느 주소에서 시작되었는지 나타낸다. 여기서 요청을 보낸 주소와 받는 주소가 다르다면 CORS 에러가 발생한다.
    • 응답 헤더의 Access-Control-Allow-Origin과 관련있다.
  • HTTP 메시지 Body의 속성 또는 내용 협상용 항목
    • Accept
      • 클라이언트가 허용할 수 있는 파일형식을 명시한다. 자신이 원하는 미디어 타입 및 우선순위를 알린다.
      • 텍스트(text/html,text/plain,…),이미지(image/jpeg,…) 등
      • Ex) Accept: / 어떤 미디어 타입도 가능하다.
      • Ex) Accept: image/* 모든 이미지 유형이 가능하다.
    • Accept-Charset
      • 클라이언트 자신이 원하는 문자 집합
    • Accept-Encoding
      • 클라이언트 자신이 원하는 문자 인코딩 방식
    • Accept-Language
      • 클라이언트 자신이 원하는 가능한 언어
    • 각각이 HTTP Entity Header 항목 중에 Content-Type, Content-Type charset-xxx, Content-Encoding, Content-Language과 일대일로 대응된다.

HTTP 응답 헤더

HTTP 응답 헤더

Response Header의 항목

  • Server
    • 서버 소프트웨어의 정보
  • Accept-Range
  • Set-Cookie
    • 서버측에서 클라이언트에게 세션 쿠키 정보를 설정한다.
  • Expires
    • 리소스가 지정된 일시까지 캐시로써 유효함을 나타낸다. 즉, 응답 컨텐츠가 언제 만료되는지를 나타낸다.
    • Cache-Control과 별개로 응답에 Expires라는 헤더를 줄 수 있다.
    • 단, Cache-Control의 max-age가 있는 경우 이 헤더는 무시
  • Age
    • 캐시 응답, max-age 시간 내에서 얼마나 흘렀는지 초 단위로 알려준다.
  • Etag
    • HTTP 컨텐츠가 바뀌었는지를 검사할 수 있는 태그
  • Proxy-authenticate
    • 요청한 서버가 프록시 서버인 경우 유저인증을 위한 값을 명시한다.
  • Allow
    • 해당 엔티티에 대해 서버 측에서 지원 가능한 HTTP 메소드의 리스트를 나타낸다. 그 외의 요청은 405 Method Not Allowed를 반환한다.
    • 때로는 HTTP 메소드인 OPTIONS에 대한 응답용 항목으로 사용된다.
      • 참고) OPTIONS : 웹서버에서 제공 가능한 HTTP 메소드에 대한 질의
  • Access-Control-Allow-Origin
    • 요청을 보내는 프론트 주소와 받는 백엔드 주소가 다르면 CORS 에러가 발생한다. 서버에서 이 항목에 프론트 주소를 적어주어야 에러가 발생하지 않는다.
    • 프로토콜, 서브도메인, 도메인, 포트 중 하나라도 다르면 에러가 발생한다.
    • 모든 주소에 CORS 요청을 허용하면 보안이 취약해진다.
    • 관련 헤더
      • Access-Control-Request-Method : 실제로 보내려는 메서드
      • Access-Control-Request-Headers : 실제로 보내려는 헤더
      • Access-Control-Allow-Methods : 서버가 허용하는 메서드
      • Access-Control-Allow-Headers : 서버가 허용하는 헤더
  • Location
    • 300번대 응답이나 201 Created 응답일 때 볼 수 있는 헤더로 서버의 응답이 다른 곳에 있다고 알려주면서 해당 위치(URI)를 지정한다.
  • Content-Dsipositioninline
    • 응답 본문을 브라우저가 어떻게 표시해야 할지 알려준다.
      • inline: 웹페이지 화면에 표시
      • attachment: 다운로드

'CS' 카테고리의 다른 글

[네트워크]HTTPS / 공개키와 대칭키  (0) 2021.04.11
[네트워크]HTTP 메소드와 멱등성  (0) 2021.04.11
[네트워크] TCP  (0) 2021.04.11
[네트워크] TCP와 UDP  (0) 2021.04.11
[네트워크] OSI 7계층  (0) 2021.04.11