Chapter 7 HTTP 헤더1 - 일반헤더

2021. 11. 23. 09:00· CS/[NETWORK]
목차
  1. 1. HTTP 헤더
  2. 2. 표현
  3. 3. 콘텐츠 협상
  4. 3.1 협상과 우선순위
  5. 4. 전송 방식
  6. 5. 일반 정보
  7. 6. 특별한 정보
  8. 7. 인증
  9. 8. 쿠키
  10. 8.1 사용
  11. 8.2 생명주기
  12. 8.3 도메인
  13. 8.4 경로
  14. 8.5 보안

Chapter 7 HTTP 헤더1 - 일반헤더

이 학습 자료는 김영한님의 인프런 강의를 참고해서 만들었습니다.



1. HTTP 헤더

  • header-field = field-name ":" OWS field-value OWS (OWS : 띄어쓰기 허용, field-name은 대소문자 구별X)
  • 용도
    • HTTP 전송에 필요한 모든 부가 정보
      • ex) 메시지 바디의 내용, 크, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보...
    • 표준 헤더가 많고, 필요시에 임의의 헤더 추가 가능
  • 분류(과거)
    • HTTP 헤더
      • General 헤더 : 메시지 전체에 적용되는 정보 ex) Connection: close
      • Request 헤더 : 요청 정보 ex) User-Agent: Mozilla/5.0 (Macintosh; ..)
      • Response 헤더 : 응답 정보 ex) Server: Apache
      • Entity 헤더 : 엔티티 바디 정보 ex) Content-Type: text/html, Content-length: 3423
    • HTTP BODY
      • 메시지 본문은 엔티티 본문(실제 데이터)을 전달하는데 사용
      • 엔티티 헤더는 엔티티 본문의 데이터를 해석할 수 있는 정보 제공
  • 분류(최신)
    • HTTP BODY
      •  
      • 메시지 본문(message body, payload)을 통해 표현(요청이나 응답에서 전달할 실제 데이터) 데이터 전달
      • 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공
        • 데이터 유형, 데이터 길이, 압축 정보 등등



2. 표현

  • 요청이나 응답에서 전달할 실제 데이터
  • 표현 헤더(전송과 응답 모두 사용)
    • Content-Type: 표현 데이터의 형식 설명
      • 미디어 타입, 문자 인코딩
    • Content-Encoding: 표현 데이터의 압축 방식
      • 표현 데이터를 압축하기 위해 사용
      • 전달하는 곳에서 압축 후 인코딩 헤더를 추가하고, 받는 쪽에서 그 정보를 바탕으로 압축 해제 한다.
      • ex) gzip, deflate, identity(압축x)
    • Content-Language: 표현 데이터의 자연 언어
      • ex) ko, en, en-US
    • Content-Length: 표현 데이터의 길이
      • 바이트 단위
      • 만약 Transfer-Encoding(전송 코딩)을 사용하면 사용하면 안됨



3. 콘텐츠 협상

  • 클라이언트가 선호하는 표현 요청
  • 협상 헤더(요청시만 사용)
    • Accept: 클라이언트가 선호하는 미디어 타입 전달
    • Accept-Charset: 클라이언트가 선호하는 문자 인코딩
    • Accept-Encoding: 클라이언트가 선호하는 압축 인코딩
    • Accept-Language: 클라이언트가 선호하는 자연 언어

 

3.1 협상과 우선순위

  • Quality Values(q) 값을 사용하여 우선순위를 매길수 있음
    • 0 ~ 1의 값을 가지며, 클수록 높은 우선순위
    • 생략하면 1
    • ex) Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
  • 간단한것보다 구체적인 것이 우선순위
    • ex) Accept: text/*, text/plain, text/plain;format=flowed, */*
      1. text/plain;format=flowed
      2. text/plain
      3. text/*
      4. `/``



4. 전송 방식

  • 단순 전송
  • 압축 전송
    • Content-Encoding 포함해야 함
  • 분할 전송
    • Transfer-Encoding: chunked 포함
    • 끝났으면 0
    • ​ \r\n 을 입력
    • Content-Length 포함X
  • 범위 전송
    • Content-Range 포함



5. 일반 정보

  • From : 유저 에이전트의 이메일 정보
  • Referer : 이전 웹 페이지 주소
    • A에서 B로 이동하는 경우 Referer: A 를 포함해서 요청
    • 유입경로 분석 가능
    • 요청에서 사용
  • User-Agent : 클라이언트의 애플리케이션 정보(웹 브라우저 정보, 등등)
    • 어떤 종류의 브라우저에서 장애가 발생하는지 파악 가능
  • Server : 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
  • Date : 메시지가 발생한 날짜와 시간



6. 특별한 정보

  • HOST: 요청한 호스트 정보(도메인), 필수값
  • Location: 페이지 리다이렉션
  • Allow: 허용 가능한 HTTP 메서드
  • Retry-After: 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
    • 초, 날짜 사용 가능



7. 인증

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



8. 쿠키

  • Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답)
  • Cookie: 클라이언트가 서버에서 받은 쿠키를 쿠키 저장소에 저장하고, HTTP 요청시 서버로 전달

 

8.1 사용

  • 쿠키가 필요한 이유
    • HTTP는 무상태(Stateless) 프로토콜이기 때문에 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어져 서로 상태를 유지를 못하기 때문이다. ex) 로그인 유지 안됨
  • 쿠키는 모든 요청에 쿠키 정보를 자동으로 포함된다. → 로그인 유지 가능
    • 하지만, 네트워크에 트래픽을 추가 유발하므로, 최소한의 정보(세션 id, 인증 토큰)만 사용하여야 한다.
      • 서버에 전송하지 않고, 웹 브라우저 내부에 데이터를 저장하려면 웹 스토리지를 사용해야 함
  • 보안에 중요한 정보를 사용하면 안됨.
  • 사용자 로그인 세션 관리, 광고 정보 트래킹에 사용된다.

 

8.2 생명주기

  • Set-Cookie: expires=만료일: 만료일이 되면 쿠키 삭제
  • Set-Cookie: max-age=3600 : 3600초 동안 쿠키 유지, 0이나 음수를 지정하면 쿠키 삭제
  • 세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료시 까지만 유지
  • 영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지

 

8.3 도메인

  • domain=example.org
  • 명시 : 명시한 문서 기준 도메인 + 서브 도메인 포함
  • 생략 : 현재 문서 기준 도메인만 적용

 

8.4 경로

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

 

8.5 보안

  • Secure
    • 원래는 http, https를 구분하지 않지만 Secure를 적용하면 https인 경우에만 전송
  • HttpOnly
    • XSS 공격 방지
    • 자바스크립트 접근 불가
    • HTTP 전송에만 사용
  • SameSite
    • XSRF 공격 방지
    • 요청 도메인과 쿠키에 설정된 도메인이 같은 경우만 쿠키 전송
저작자표시 (새창열림)

'CS > [NETWORK]' 카테고리의 다른 글

[네트워크] 쿠키와 세션  (0) 2022.05.04
Chapter 7 HTTP 헤더2 - 캐시와 조건부 요청  (0) 2021.11.25
Chapter 6 HTTP 상태 코드  (0) 2021.11.18
Chapter 5 HTTP 메서드 활용  (0) 2021.11.16
Chapter 4 HTTP 메서드  (0) 2021.11.11
  1. 1. HTTP 헤더
  2. 2. 표현
  3. 3. 콘텐츠 협상
  4. 3.1 협상과 우선순위
  5. 4. 전송 방식
  6. 5. 일반 정보
  7. 6. 특별한 정보
  8. 7. 인증
  9. 8. 쿠키
  10. 8.1 사용
  11. 8.2 생명주기
  12. 8.3 도메인
  13. 8.4 경로
  14. 8.5 보안
'CS/[NETWORK]' 카테고리의 다른 글
  • [네트워크] 쿠키와 세션
  • Chapter 7 HTTP 헤더2 - 캐시와 조건부 요청
  • Chapter 6 HTTP 상태 코드
  • Chapter 5 HTTP 메서드 활용
쿠엔크
쿠엔크
우아한테크코스 5기 BE 에단 Github : https://github.com/cookienc
쿠엔크
기러기는 기록기록
쿠엔크
전체
오늘
어제
  • 분류 전체보기 (132)
    • CS (46)
      • [OS] (12)
      • [NETWORK] (10)
      • [DATABASE] (11)
      • [BASIC CONCEPT] (1)
      • [DATA STRUCTURE] (7)
      • [ALGORITHM] (5)
    • LANGUAGE (17)
      • [JAVA] (17)
    • DESIGN_PATTERN (2)
    • FRAMEWORK (18)
      • [SPRING] (18)
    • ORM (11)
      • JPA (11)
    • AWS (7)
    • BOOK (10)
      • [자바 웹 개발 워크북] (3)
      • [이펙티브 자바] (7)
    • 개발 (19)
      • [오류] (7)
      • [고민] (1)
      • [우테코] (10)
      • [iTracker] (1)
    • Tip (1)
      • [Plugins] (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Effective Java
  • 오류
  • aws
  • Spring
  • ArgumentResolver
  • 알고리즘
  • 자바 웹 개발 워크북
  • 개념
  • CORS
  • 디자인 패턴
  • JVM
  • 스프링
  • HTTP
  • java
  • JPA
  • 운영체제
  • 가비아
  • 네트워크
  • 자료구조
  • 데이터베이스

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
쿠엔크
Chapter 7 HTTP 헤더1 - 일반헤더

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.