티스토리 뷰

Network

[HTTP] HTTP BODY

Gray__ 2022. 1. 9. 12:41

HTTP 헤더 개요

 

메시지 본문(message body)을 ,통해 표현 데이터 전달

메시지 본분 = 페이로드(payload)

표현은 요청이나 응답에서 전달할 실제 데이터

표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공

데이터 유형(html, json), 데이터 길이, 압축 정보 등등


표현

어떤 리소스를 html이라는 표현으로 전달할 것이냐, json형태의 표현으로 전달할 것이냐

 

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

  - 미디어 타입, 문자 인코딩

  - 예) text/html; charset=uft-8

 

Content-Encoding: 표현 데이터 인코딩

  - 표현 데이터를 압축하기 위해 사용

  - 데이터를 전달하는 곳에서 압축 후 인코딩 헤더 추가

  - 데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축 헤제

  - 예) gzip, deflate, identity

 

Content-Language: 표현 데이터의 자연 언어

  - 표현 데이터의 자연 언어를 표현

  - 예) ko, en, en-US

 

Content-Length: 표현 데이터의 길이

  - 바이트 단위

  - 전송 코딩을 사용하면 Content-Length를 사용하면 안됨

 


협상(콘텐츠 네고시에이션)

 

Accept: 클라이언트가 선호하는 미디어 타입 전달

Accept-Charset: 클라이언츠가 선호하는 문자 인코딩

Accept-Encoding: 클라이언트가 선호하는 압축 인코딩

Accept-Language: 클라이언트가 선호하는 자연 언어

 

협상과 우선순위 1

Quality Values (q)의 값으로 우선순위를 매길 수 있다

0~1의 범위로 나타낼 수 있으며 클수록 우선순위가 높다

생략하면 1

Accept-Language: ko-KR,ko:q=0.9,en-US;q=0.8,en;q=0.7

 

협상과 우선순위 2

구체적인 것이 우선한다

Accept: text/*, text/plain, text/plain;format=flowed, */*

  - 1. text/plain;format=flowed

  - 2. text/plain

  - 3. text/*

  - 4. */*

 

협상과 우선순위 3

• 구체적인 것을 기준으로 미디어 타입을 맞춘다

• Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5

Media Type Quality
text/html;level=1 1
text/html 0.7
text/plain 0.3
image/jpeg 0.5
text/html;level=2 0.4
text/html;level=3 0.7

 


쿠키

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

Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달

 

HTTP는 무상태(Stateless) 프로토콜이다. 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어짐

따라서 클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못함

클라이언트와 서버는 서로 상태를 유지하지 않음

 

그러므로 쿠키를 사용하지 않고 모든 요청에 사용자 정보를 포함해서 보낼 수도 있지만

모든 요청과 링크에 사용자 정보를 포함해야 한다

 

쿠키 사용

따라서 쿠키를 사용하면 쉽게 전달할 수 있다

자동으로 웹브라우저는 쿠키를 찾아 쿠키 값을 꺼내서 Cookie: 헤더를 만들어서 서버로 보낸다

서버에서는 유저를 알 수 있다

 

• 사용처

사용자 로그인 세션 관리, 광고 정보 트래킹

 

• 쿠키 정보는 항상 서버에 전송

네트워크 트래픽을 추가로 유발, 최소한의 정보만 사용한다(세션 id, 인증 토큰)

서버에 전송하지 않고, 웹 브라우저 내부에 데이터를 저장하고 싶으면 웹 스토리지 참고

 

• 주의점

보안에 민감한 데이터는 절대로 저장하면 안됨(주민번호, 신용카드 번호 등등)

 

쿠키 - 생명주기, 도메인, 경로, 보안

• 생명주기

Set-Cookie: expires=Sat, 26-Dec-2020 04:39:21 GMT -> 만료일이 되면 쿠키 삭제

Set-Cookie: max-age=3600 (3600초) -> 시간이 지나면 쿠키 삭제

 

• 도메인

예) domain=example.org

명시적인 경우 명시한 문서 기준 도메인 + 서브 도메인 포함

domain = example.org를 지정해서 쿠키 생성, example.org는 물론이고 dev.example.org도 쿠키 접근

생략하는 경우 현재 문서 기준 도메인만 적용

example.org 에서 쿠키를 생성하고 domain 지정을 생략, example.org는 쿠키 접근 dev.example.org 쿠키 미접근

 

• 경로

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

댓글