HTTP 헤더
- HTTP 전송에 필요한 모든 부가정보
- 표준 헤더가 너무 많음
- 필요시 임의의 헤더 추가 가능
분류
- General 헤더 : 메시지 전체에 적용되는 정보
- Request 헤더 : 요청 정보
- Response 헤더 : 응답 정보
- Representation 헤더 : 표현 바디 정보 , 표현 본문의 데이터를 해석할 수 있는 정보 제공
1) 표현 (Representation)
1.1) Content-Type : 표현 데이터의 형식
- 미디어 타입, 문자 인코딩
ex) text/html; charset=utf-8, application/json
1.2) Content-Encoding : 표현 데이터의 압축 방식
- 표현 데이터를 압축하기위해 사용
- 데이터를 전달하는 곳에서 압축 후 인코딩 헤더 추가
- 데이터를 읽는 쪽에서 인코딩 허더의 정보로 압축해제
1.3) Content-Language : 표현 데이터의 자연 언어
- 표현 데이터의 자연 언어 표현
ex) ko, en, en-US
1.4) Content-Length : 표현 데이터의 길이
- 바이트 단위
- Transfer-Encoding을 사용하면 Content-Length를 사용하면 안됨
표현 헤더는 전송, 응답 둘 다 사용
2) 협상 (컨텐츠 네고시에이션)
클라이언트가 선호하는 표현 요청
- 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, /*
3 2 1 4
협상 헤더는 요청시에만 사용
3) 전송 방식
- 단순 전송 (Content-Length)
- 압축 전송 (Content-Encoding)
- 분할 전송 (Transfer-Encoding)
- 범위 전송 (Range, Content-Range)
4) 일반 정보
- From : 유저 에이전트의 이메일 정보
- Referer : 이전 웹 페이지 주소
- A -> B로 이동하는 경우 B를 요청할 때 Referer : A 를 포함해서 요청
- Referer를 사용해서 유입 경로 분석 가능
- User-Agent : 유저 에이 전트 애플리케이션 정보
- 어떤 종류의 브라우저에서 장애가 발생하는지 파악 가능
- 통계 정보
- Server : 요청을 처리하는 오리진 서버의 소프트웨어 정보
- Date : 메시지가 생성된 날짜
5) 특별한 정보
- HOST : 요청한 호스트 정보 (도메인), 필수
- Location : 페이지 리다이렉션
- Allow : 허용가능한 HTTP 메서드
- Retry-After : 유저 에이전트가 다음 요청을 하기까지 기다려야하는 시간
6) 인증
- Authorization : 클라이언트 인증 정보를 서버에 전달
- WWW-Authenticate : 리소스 접근 시 필요한 인증 방법 정의
7) 쿠키
- Set-Cookie : 서버에서 클라이언트로 쿠키 전달 (응답)
- Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청 시 서버로 전달
참고 자료