HTTP 헤더
- 용도 : HTTP 전송에 필요한 모든 부가정보, 필요시 임의의 헤더 추가 가능
- 과거엔 엔티티 헤더, 현재 표현 헤더
Connection: closeUser-Agent: Mozilla/5.0Server: ApacheContent-Type: text/html, Content-Length: 3423

표현(Representation) = 표현 메타데이터(representation Metadata) + 표현 데이터(Representation Data)
Content-Type: 표현 데이터의 형식
예)
text/html; charset=utf-8
application/json
image/png
Content-Encoding: 표현 데이터의 압축 방식
예)
gzip // 압축하는 것
deflate
identity // =같다, 즉 압축을 안한다는 것
Content-Language: 표현 데이터의 자연 언어
예)
ko // 한국어
en // 영문
en-US
Content-Length: 표현 데이터의 길이
: 클라이언트가 선호하는 표현 요청
Accept : 클라이언트가 선호하는 미디어 타입 전달Accept-Charset : 클라이언트가 선호하는 문자 인코딩Accept-Encoding : 클라이언트가 선호하는 압축 인코딩Accept-Language : 클라이언트가 선호하는 자연 언어
Accept-Language:ko 전송했기 때문에 한국어로 지원됨
우선순위가 있을 경우
Quality Values(q) 값 사용
| 우선순위 | 내용 |
|---|---|
| 1 | ko-KR;q=1 (q생략) |
| 2 | ko;q=0.9 |
| 3 | en-US;q=0.8 |
| 4 | en;q=0.7 |

| 우선순위 | 내용 |
|---|---|
| 1 | text/plain;fromat=followed |
| 2 | text/plain |
| 3 | text/* |
| 4 | */* |
Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,text/html;level=2;q=0.4, */*;q=0.5
| 미디어 타입 | 순위 |
|---|---|
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 |
Content-Length를 지정하는 것gzip같은 것으로 압축을 하여 전송하는 것Content-Encoding지정Transfer-Encoding 사용Content-Length를 보내면 안됨 -> 쪼개서 전송하기 때문에 길이를 예상할 수 없고, 덩어리마다 바이트 정보가 있기 때문
-> 5바이트 Hello를 먼저 전송 후, 5바이트 World 전송 (0 \r\n이면 끝)Content-Range 사용
: 유저 에이전트의 이메일 정보
: 이전 웹 페이지 주소
-> 구글에서 '테일러 스위프트'검색 후 위키백과에 들어가면, referer에 구글 주소가 있는 것을 확인할 수 있다
: 유저 에이전트 애플리케이션 정보
Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/119.0.0.0 Safari/537.36
: 요청을 처리하는 오리진(Origin) 서버의 소프트웨어 정보
오리진 서버(Origin Server)
: HTTP 요청할 경우 여러 프록시 서버를 거치게 되는데 이 때, 실제로 요청을 받아 응답을 하는 서버
: 메시지가 생성된 날짜와 시간
: 요청한 호스트 정보(도메인)
Host가 없을 경우, 어느 애플리케이션에 들어가야할지 구분할 수 없음
Host가 있을 경우, 구분 가능
: 페이지 리다이렉션
Location 헤더가 있으면, Location 위치로 자동 이동(리다이렉션)Location 값은 요청에 의해 생성된 리소스 URILocation 값은 요청을 자동으로 리다이렉션하기 위한 대상 리소스를 가리킴: 허용 가능한 HTTP 메서드
: 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
: 클라이언트 인증 정보를 서버에 전달
Authorization: Basic xxxxxxx
OAuth 2.0의 경우 -> Authorization: Bearer 토큰 값이 들어감: 리소스 접근시 필요한 인증 방법 정의
WWW-Authenticate: Newauth realm="apps", type=1, title="Login to \"apps\"", Basic realm="simple"
Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답)Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달set-cookie: sessionId=abcde1234;
expires=Sat, 26-Dec-2020 00:00:00 GMT;
path=/;
domain=.google.com;
Secure
예시
Set-Cookie사용
쿠키는 모든 요청에 쿠키 정보를 자동으로 포함 -> 보안에 이슈 발생 가능
사용처
쿠키 정보는 항상 서버에 전송됨
localStorage, sessionStorage) 참고보안에 민감한 데이터는 저장하면 안됨
set-cookie: expires=Sat, 26-Dec-2020 00:00:00 GMT
set-cookie: max-age=3600 (초)
expires 사용 -> 만료일이 되면 쿠키 삭제max-age 사용 -> 초단위로 지정, 0이나 음수를 지정하면 쿠키 삭제domain=.google.com;
domain사용domain=example.org지정해서 쿠키 생성example.org는 물론이고dev.example.org도 쿠키 접근example.org에서 쿠키 생성하고 domain지정 생략example.org에서만 쿠키 접근dev.example.org는 쿠키 미접근path=/home
path=/루트로 지정path=/home으로 지정하면 /home/level1은 가능하지만 /hello는 불가능Secure
Secure를 적용하면 https인 경우에만 전송HttpOnly
SameSite