HTTP Header1

KJH·2023년 3월 26일
0
post-custom-banner

Header란?

Http 전송에 필요한 모든 부가정보 엄청많음
필요시 임의의 헤더 추가 가능

  • Message body로 데이터를 전달 (payload)
  • header는 데이터를 해석할 수 있는 정보 제공 (유형, 길이 ....)

표현 = 표현 메타데이터 + 표현 데이터


표현 (Representation)

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

REST API의 RE가 바로 표현

  • Content-Type : 표현 데이터의 형식

    • (text/html;charset=utf-8 , application/json .....)
  • Content-Encoding : 표현 데이터의 압축 방식

    • 전달하는 곳에서 압축 후 헤더 추가 => 읽는 쪽에서 헤더정보로 압축 해제 (gzip ....)
  • Content-Language : 표현 데이터의 자연 언어

    • (ko,en .....)
  • Content-Length : 표현 데이터의 길이

    • 바이트 단위
    • Transfer-Encoding 사용시 Content-Length 사용 ❌ Transfer-encoding

    협상

    클라이언트가 선호하는 표현으로 달라고 요청 => 우선순위에 맞춰서 서버가 표현 (못줄수도)

    요쳥시에만 사용

    • Accept : 미디어 타입
    • Accept-Charset : 문자 인코딩
    • Accept-Encoding : 압축 인코딩
    • Accept-Language : 자연 언어

    우선순위

    ex)

    accept-language: ko,en-US;q=0.9,en;q=0.8,ko-KR;q=0.7
  • 없으면 1, 높을수록 좋은거

  • 구체적일수록 좋은거


전송 방식

  • 단순 : Content-Length를 줌
  • 압축 : Content-Encoding으로 압축 정보 추가
  • 분할 : Transfer-Encoding : chunked 덩어리로 쪼개서 보냄 (Content-length ❌) 각 덩어리마다 있음
  • 범위 : Content-Range로 범위 지정해줌

일반 정보

  • From
    • 요청
    • 유저 에이전트의 이메일 정보 (잘 사용 x)
  • Referer ❗️ 진짜많이씀
    • 요청
    • 이전 웹 페이지 주소 (어디서들어왔는가?)
    • 유입 경로 분석 가능
    • referrer의 오타임
  • User-Agent
    • 요청
    • 클라이언트의 애플리케이션 정보(웹 브라우저 등)
    • 통계정보
  • Server
    • 응답
    • 요청을 처리하는 Origin 서버의 소프트웨어 정보
  • Date
    • 응답
    • 메시지가 발생한 날짜와 시간

특별한 정보

  • HOST ❗️
    • 요청
    • 필수값임
    • 하나의 서버(IP)가 여러 도메인을 처리할 때 구분
  • Location
    • 응답
    • 페이지 리다이렉션
    • 3xx응답의 결과에 Location이 있으면, 자동 이동
    • 201도 쓸 수있는데, 요청에 의해 생성된 리소스 URI
  • Allow
    • 405(Method not allow) 에서 응답에 포함
    • 허용 가능한 HTTP 메서드
  • Retry-After
    • 503(Service Unvaliable) 에서 응답에 포함
    • 유저가 다음 요청을 하기까지 기다려야 하는 시간 (날짜|초 표기)

인증

  • Authorization
    • 클라이언트의 인증 정보를 서버에 전달
  • WWW-Authenticate
    • 401(UnAuthorized) 응답과 함께 사용
    • 리소스 접근에 필요한 인증 방법

쿠키 ❗️

Http는 Stateless 한 프로토콜이므로, 요청과 응답을 주고받고 끝임

한계를 해결하기 위해, 모든 요청에 쿠키를 보냄

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

🍪

생명주기

  • expires : 만료일 지정
  • max-age : 초단위 지정 (음수면 삭제)
  • 세션 쿠키 : 만료 날짜를 생략하면, 종료시까지 유지

도메인

  • 명시 : 명시한 문서 기준 도메인 + 서브 도메인 포함
    • example.org를 지정하면 dev.example.org 도 쿠키 보냄
  • 생략 : 현재 문서 기준 도메인만 적용
    • dev.example.org는 쿠키 안보냄

PATH

일반적으로 path=/ 루트로 지정
ex)
path = /home으로 지정했다면
/home 밑의 경로만 가능

보안

  • Secure : Https에서만 전송
  • HttpOnly : 자바스크립트에서 document.cookie로 접근 불가
  • SameSite : 요청 도메인과 쿠키에 설종된 도메인이 같은 경우만 쿠키 전송 (XSRF == CSRF 공격 방지)

HTTP2 <- 다음글

post-custom-banner

0개의 댓글