[HTTP] HTTP 헤더는 어떠한 것들이 있을까?
HTTP 헤더
표현 헤더
- `Content-Type` : 표현 데이터의 형식
- `Content-Encoding` : 표현 데이터의 압축 방식
- `Content-Language` : 표현 데이터의 자연 언어
- `Content-Length` : 표현 데이터의 길이 (byte 단위)
표현 헤더는 `요청`/`응답`에 둘 다 사용
> 참고 <
Transfer-Encoding(전송 코딩)을 사용하면 Content-Length 를 사용하면 안 된다.
협상 헤더(콘텐츠 네고시에이션)
클라이언트가 선호하는 표현 요청
- `Accept` : 클라이언트가 선호하는 미디어 타입 전달
- `Accept-Charset` : 클라이언트가 선호하는 문자 인코딩
- `Accept-Encoding` : 클라이언트가 선호하는 압축 인코딩
- `Accept-Language` : 클라이언트가 선호하는 자연 언어
협상 헤더는 `요청`에만 사용
Quality Values(q) 값
- 0 ~ 1, 클수록/구체적일수록 높은 우선순위
- 생략하면 1
- `Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7` (ko-KR > ko > en-US > en)
- `Accept: text/*, text/plain, text/plain;format=flowed, */*` (text/plain;format=flowed > text/plain > text/* > */*)
전송 방식 헤더
- `단순 전송`
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
</html>
- `압축 전송`
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Encoding: gzip
Content-Length: 521
lkj123kljoiasudlkjaweioluywlnfdo912u34ljko98udjkl
- `분할 전송`
: Content-Lenght 사용 X
HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked
5
Hello
5
World
0
\r\n
- `범위 전송`
: 대용량 파일 다운로드 시 특정 부분만 요청할 때 사용
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Range: bytes 1001-2000 / 2000
qweqwe1l2iu3019u2oehj1987askjh3q98y
일반 정보 헤더
- `From`
: 유저 에이전트의 이메일 정보
: 검색 엔진에서 주로 사용
: 요청에서 사용
: 일반적으로 사용 X
- `Referer`
: 현재요청된 페이지의 이전 웹 페이지 주소
: 유입 경로 분석 가능
: 요청에서 사용
(Referrer 의 오타이다.)
- `User-Agent`
: 클라이언트의 애플리케이션 정보
: 통계 정보
: 어떤 브라우저에서 장애가 발생하는지 파악
: 요청에서 사용
- `Server`
: 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
: 응답에서 사용
- `Date`
: 메시지가 발생한 날짜와 시간
: 응답에서 사용
> 참고 <
ORIGIN 서버 : 중간의 프록시 서버(캐시 서버)가 아닌 원래의 진짜 서버
특별한 정보 헤더
- `Host`
: 필수, 하나의 서버가 여러 도메인을 처리해야 할 때
: 요청에서 사용
- `Location`
: 리다이렉션시 해당 위치로 자동 이동
: 응답에서 사용
- `Allow`
: 허용 가능한 HTTP 메서드
: 405 (Method Not Allowed) 에서 응답에 포함해야 함
: 응답에서 사용
- `Retry-After`
: 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
: 503 (Sevice Unavailable) 서비스가 언제까지 복구될지 알려줌
: 날짜 표기, 초단위 표기
: 응답에서 사용
인증 헤더
- `Authorization`
: 클라이언트 인증 정보를 서버에 전달
: 요청에서 사용
- `WWW-Authenticate`
: 리소스 접근 시 필요한 인증 방법을 안내
: 401 (Unauthorized) 응답과 함께 사용
: 응답에서 사용
쿠키 헤더
- `Set-Cookie`
: 서버에서 클라이언트로 쿠키 전달
: 응답에서 사용
- `Cookie`
: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청 시 서버로 전달
: 요청에서 사용
캐시 - 검증 헤더
- `Last-Modified`
: 서버가 데이터 최종 수정일을 클라이언트에게 전달
: 응답에서 사용
- `If-Modified-Since` / `If-Unmodified-Since`
: 클라이언트가 브라우저 캐시에 있는 데이터 최종 수정일을 서버에게 전달
: 요청에서 사용
- `ETag`
: 서버가 데이터의 Hash 값을 클라이언트에게 전달
: 응답에서 사용
- `If-None-Match` / `If-Match`
: 클라이언트가 브라우저 캐시에 있는 ETag 값을 서버에게 전달
: 요청에서 사용
캐시 - 제어 헤더
- `Cache-Control`
: 캐시 동작을 제어하는 지시어 제공
: 응답에서 사용
> 참고 <
- 쿠키와 세션에 대한 자세한 내용은 다음글 에 있다.
출처 | HTTP 웹 기본 지식(김영한) - 인프런