✏️ HTTP 헤더1 - 일반 헤더

박상민·2023년 9월 2일
0

HTTP WEB 기본 지식

목록 보기
7/13

⭐️ HTTP Header

📌 HTTP 헤더의 용도

-HTTP 전송에 필요한 모든 부가정보

  • 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐
    시 관리 정보...
  • 표준 헤더가 너무 많음
  • 필요시 임의의 헤더 추가 가능
    • helloworld: hihi

❕ 과거

📌 HTTP 헤더 분류 - REF2616(과거)

과거의 헤더는 4가지로 분류됨.

  • 헤더 분류
    • General 헤더: 메시지 전체에 적용되는 정보, 예) Connection: close
    • Request 헤더: 요청 정보, 예) User-Agent: Mozilla/5.0 (Macintosh; ..)
    • Response 헤더: 응답 정보, 예) Server: Apache
    • Entity 헤더: 엔티티 바디 정보, 예) Content-Type: text/html, Content-Length: 3423

📌 HTTP BODY - message body - RFC2616(과거)

  • 메시지 본문(message body)은 엔티티 본문(entity body)을 전달하는데 사용
  • 엔티티 본문은 요청이나 응답에서 전달할 실제 데이터
    • 쉽게 이야기해서 메시지 본문 안에 엔티티 본문을 담아서 전달하는 것이다.
  • 엔티티 헤더엔티티 본문의 데이터를 해석할 수 있는 정보 제공
    • 데이터 유형(html, json), 데이터 길이, 압축 정보 등등

그러나
1999년 RFC2616 ❌ <-폐지
2014년 RFC7230~7235 등장

❗ 최신

REC723X 변화

  • 엔티티(Entity) -> 표현(Representation)
  • Representation Metadata + Representation Data
  • 표현 = 표현 메타데이터 + 표현 데이터

왜 표현(Representation)이라고 할까?
회원과 관련된 회원 조회 내역을 Html로 제공한다고 하자.
이것은 회원이라는 리소스를 html로 표현한 것이다. 그리고 예를 들어서 회원 데이터가 DB에 있는데 이것을 우리가 Json으로 조회를 하면 회원이라는 리소스를 실제 데이터가 http에서 전송이 될 때는 html로 될 수도 있고 json으로 될 수도 있다.
즉, 회원이라는 리소스를 html로 표현할 수도 있고, json으로 표현해서 전달할 수도 있다. 그래서 실제 전달하는 것을 표현이라고 명확하게 용어를 정리했다.

📌 HTTP BODY - message body - RFC7230(최신)

  • 메시지 본문(message body)을 통해 표현 데이터 전달
  • 메시지 본문 = 페이로드(payload)
  • 표현은 요청이나 응답에서 전달할 실제 데이터
  • 표현 헤더표현 데이터를 해석할 수 있는 정보 제공
    • 데이터 유형(html, json), 데이터 길이, 압축 정보 등등

      참고: 표현 헤더는 표현 메타데이터와 페이로드 메시지를 구분해야 하지만, 여기서는 생략한다.

📌 표현(Representation)

  • Content-Type: 표현 데이터의 형식
  • Content-Encoding: 표현 데이터의 압축 방식
  • Content-Language: 표현 데이터의 자연 언어
  • Content-Length: 표현 데이터의 길이
  • 표현 헤더는 전송, 응답 둘다 사용

✔︎ Content-Type

표현 데이터의 형식 설명

  • 미디어 타입, 문자 인코딩
  • 예)
    • text/html; charset=utf-8
    • application/json
    • image/png

쉽게 말해서 Content-Body에 들어가는 내용이 무엇인지 알려주는 것이다.
Ex) html, json 등

✔︎ Content-Encoding

표현 데이터 인코딩

  • 표현 데이터를 압축하기 위해 사용
  • 데이터를 전달하는 곳에서 압축 후 인코딩 헤더 추가
  • 데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축 해제
  • 예)
    • gzip
    • deflate
    • identity

✔︎ Content-Language

표현 데이터의 자연 언어

  • 예)
    • ko
    • en
    • en-US

✔︎ Content-Length

  • 바이트 단위
  • Transfet-Encoding(전송 코딩)을 사용하면 Content-Length를 사용하면 안됨

⭐️ 인증

• Authorization: 클라이언트 인증 정보를 서버에 전달
• WWW-Authenticate: 리소스 접근시 필요한 인증 방법 정의

📌 Authorization

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

  • Authorization: Basic xxxxxxxxxxxxxx

📌 WWW-Authenticate

리소스 접근시 필요한 인증 방법 정의

  • 리소스 접근시 필요한 인증 방법 정의
  • 401 Unauthorized 응답과 함께 사용
  • WWW-Authenticate: Newauth realm="apps", type=1,
    title="Login to \"apps\"", Basic realm="simple"

출처
모든 개발자를 위한 HTTP 웹 기본 강의
해당 게시물의 사진 자료는 위 강의의 자료를 사용하였습니다.
https://tools.ietf.org/html/rfc7235

profile
스프링 백엔드를 공부중인 대학생입니다!

1개의 댓글

comment-user-thumbnail
2024년 1월 9일

아 손흥민~ 헤더~⚽️⚽️⚽️골이에요!!!! 손흥민 헤트트릭~!~!~!~!

답글 달기