HTTP 헤더

챠밍·2022년 3월 18일
0

HTTP 웹 기본 지식

목록 보기
4/4
post-thumbnail

< 표현 >

• Content-Type: 표현 데이터의 형식
-- ex) html, json, image
• Content-Encoding: 표현 데이터의 압축 방식
-- ex) gzip
• Content-Language: 표현 데이터의 자연 언어
-- ex) ko, en
• Content-Length: 표현 데이터의 길이 (바이트 단위)

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


< 협상 >

클라이언트에서 데이터 요청을 할 때 아예 우선순위를 지정해서 보내는 것

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

** 협상 헤더는 요청시에만 사용

• 우선순위
1. Quality Values(q) 값 사용 (1에 가까울수록 높은 우선순위)
2. 구체적인 것이 우선


- 특별한 정보

Host : 하나의 서버가 여러 도메인을 처리해야 할 때 요청에서 사용!


< 쿠키 >

서버에서 클라이언트로 쿠키 전달(응답)하고 클라이언트가 서버에서 받은 쿠키를 저장한다. 그리고 다시 HTTP 요청 시 쿠키 저장소를 통해 데이터를 서버로 전달 (로그인 시 사용)

도메인

명시: 명시한 문서 기준 도메인 + 서브 도메인 포함
생략: 현재 문서 기준 도메인만 적용

경로

  1. 경로를 포함한 하위 경로 페이지만 쿠키 접근
  2. 일반적으로 path=/ 루트로 지정

보안

  1. Secure
  • 쿠키는 http, https를 구분하지 않고 전송
  • Secure를 적용하면 https인 경우에만 전송
  1. HttpOnly
  • XSS 공격 방지
  • 자바스크립트에서 접근 불가(document.cookie)
  • HTTP 전송에만 사용

< 캐시와 조건부 요청 >

  • 캐시 적용
  1. 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다.
  2. 비싼 네트워크 사용량을 줄일 수 있다.
  3. 브라우저 로딩 속도가 매우 빠르다.

⭐️ - 만약 시간 초과로 캐시를 다시 다운 받아야 한다면?

  1. 서버의 데이터가 갱신되지 않으면, 검증헤더를 통해 바디부분을
    빼고 재전송
  2. ETag만 서버에 보내서 같으면 유지, 다르면 다시 받기
    +) Lash-Modified

>> 즉, 캐시 제어 로직을 완전히 서버에서 관리한다!


Cache-Control

  1. Cache-Control: max-age
    캐시 유효 시간, 초 단위
  2. Cache-Control: no-cache
    데이터는 캐시해도 되지만, 항상 원(origin) 서버에 검증하고 사용
  3. Cache-Control: no-store
    데이터에 민감한 정보가 있으므로 저장하면 안됨
 (메모리에서 사용하고 최대한 빨리 삭제)

Pragma : no-cache
캐시 제어(하위 호환)

Expires
캐시 만료일 지정(하위 호환)

- 캐시 무효화

  • Cache-Control: no-cache
    • 데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용(이름에 주의!)

  • Cache-Control: no-store
    • 데이터에 민감한 정보가 있으므로 저장하면 안됨 (메모리에서 사용하고 최대한 빨리 삭제)

  • Cache-Control: must-revalidate
    • 캐시 만료후 최초 조회시 원 서버에 검증해야함
    • 원 서버 접근 실패시 반드시 오류가 발생해야함 - 504 에러
    • must-revalidate는 캐시 유효 시간이라면 캐시를 사용함

  • Pragma: no-cache
    • HTTP 1.0 하위 호환

profile
SW developer

0개의 댓글