본문 바로가기
CS

HTTP 헤더 - 헤더1

by 김선지 2024. 6. 9.

헤더: HTTP 전송에 필요한 모든 부가정보

 

RFC7230~7235

 

Entity -> Representation = representation Metadata + Representation Data

 

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

 

HTTP BODY (message body):

 

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

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

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

표현 헤더는표현 데이터를 해석할 수 있는정보 제공 (데이터 유형 html json, 데이터 길이, 압축정보 등)

 

 

표현 - representation

헤더:

Content-Type: 표현 데이터의 형식  / ex) Content-Type: text/html;charset=UTF-8 or Content-Type:application/json

Content-Encoding: 표현 데이터의 압축 방식 / 표현데이터를 압축하기 위해 사용, 전달하는 곳에서 압축 후 인코딩 헤더 추가 후 데이터 읽는 쪽에서 인코딩 헤더의 정보로 압축 해제  ex) Content-Encoding: gzip /  identity는 압축 안한다는 뜻

Content-Language: 표현 데이터의 자연 언어 (한국어인지 영어인지) ex) Content-Language: ko

Content-Length: 표현 데이터의 길이 ex) Content-Length: 521 / 바이트 단위고 Transfer-Encoding을 사용하면 적으면 안됨

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

 

 

협상헤더: (콘텐츠 네고시에이션) - 클라이언트가 선호하는 표현 요청, 요청시에만 사용

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

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

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

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

 

협상과 우선순위1

 

Quality Vaules(q)

0~1, 클수록 높은 우선순위, 생략하면 1

ex) ACCEPT-Language: ko-KR,ko;1=0.9,en-US;q=0.8,en;q=0.7

 

1. ko-KR;q=1 (q 생략)   - 한국사람이 쓰는 한국어

2. ko;1=0.9    - 한국 공통어?

3. en-US;q=0.8 - us에서 쓰는 영어

4. en:q=0.7 - 공통 영어

 

협상과 우선순위2

구체적인 것이 우선한다.

Accept: text/*, text/plain, */*

 

협상과 우선순위3

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

 

전송 방식

 

단순 전송: 요청하면 바로 Content-Length에 대한 정보를 준다. 한번에 요청하고 한번에 쭉 받는다

압축 전송: Content-Encoding: gzip, 어떠한 방식으로 압축되어 있는지

분할 전송: Transfer-Encoding:chunked, 청크별로 몇개로 나눠서 보냄, Content-Length를 넣으면 안된다.

HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chucked

5
HELLO
5
WORLD
0
/r/n

범위 전송: Range: bytes=1001-2000 (요청)

                  Content-Range: bytes 1001-2000 / 2000 (응답)

 

일반정보

 

From: 유저 에이전트의 이메일 정보 - 잘 사용되지 않음

Referer: 현재 요청된 페이지의 이전 웹 페이지 주소 (뒤로가기 할때나 유입 경로 분석에 필요, 요청에서 사용)

user-agent: 유저 에이전트의 애플리케이션 (웹브라우저) 정보

Server: 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보 (Server: Apache/2.2.22 (Debian), Server: nginx) (응답에서 사용)

Date : 메시지가 발생한 날짜와 시간 ex) Date: Tue, 15 Nov 1994 08:12:32 GMT (응답에서 사용)

 

특별한 정보

Host : 요청한 호스트 정보 (도메인) => 요청에서 사용, 필수값이다.

하나의 서버가 여러 도메인을 처리해야 할 때, 하나의 IP주소에 여러 도메인이 적용되어 있을 때.

가상호스트를 통해 여러 도메인을 한번에 처리할 수 있는 서버의 경우, 하나의 아이피인데 google.com, naver.com 의 여러 도메인을 처리하는 경우

 

Location: 3xx 응답의 결과에 Location 헤더가 있으면 해당 URI로 자동이동, 요청 자동 리디렉션하기위한 리소스 정의

Allow: 허용 가능한 HTTP 메서드, ex) allow: GET, HEAD, PUT

Retry-After: 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간,

 

인증

Authorization: 클라이언트 인증 정보를 서버에 전달 ex) Authorization: Basic xxxxxxxxxxxxxx

WWW-Authenticate: 리소스 접근시 필요한 인증 방법 정의, 401 Unathorized 응답과 함께 사용

 

쿠키

Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답) ex) Set-Cookie: expires=Sat, 26-Dec-2020 04:39:21 GMT, max-age=3600 

  (초) 0이나 음수 지정시 쿠키 삭제, 세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시까지만 유지,  영속 쿠키: 만료 날짜를 입력하면 해당 날짜까지 유지

 

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

 

쿠키- 도메인:

예 ) domain=example.org

명시: 명시한 문서 기준 도메인 + 서브 도메인 포함

   domain=example.org 지정해서 쿠키 생성시 

   example.org는 물론이고 dev.example.org 또한 쿠키접근 근ㅇ

 

생략: 현재 문서 기준 도멩니만 적용

   example.org 에서 쿠키 생성하고 domain 지정을 생략

   dev.example.org에서는 쿠키 접근 불가 

 

쿠키  - 경로

예) path=/home

이 경로를 포함한 하위 경로 페이지만 쿠키 접근

일반적으로는 path=/ 루트로 지정

예) path=/home 시에는 /home/level1 가능이지만 /hello는 불가능

 

쿠키  - 보안

Secure: 쿠키는 http, https 구분하지 않고 전송, Secure를 적용하면 https인 경우에만 전송 가능

HttpOnly: XSS 공격 방지, 자바스크립트에서 접근 불가(document.cookie), HTTP 전송에만 사용

SameSite: XSRF 공경 방지, 요청 도메인과 쿠키에 설정된 도메인이 같은 경우에만 쿠키 전송

'CS' 카테고리의 다른 글

HTTPServletRequest, HTTPServletResponse  (0) 2024.06.11
HTTP 헤더 - 헤더2 (캐시, 조건부)  (0) 2024.06.09
HTTP 상태코드  (0) 2024.06.09
URI와 웹 브라우저 요청 흐름, Stateful  (0) 2024.06.04
IP(인터넷 프로토콜), PORT, DNS  (0) 2024.06.03