HTTP(15) - HTTP 헤더(3) 전송 방식, 일반 정보, 특별한 정보
HTTP 전송 방식에는 대표적인 4가지 방식이 있다.
1. 단순 전송
- Content-Length만 담아서 보낸다.
2. 압축 전송
- Content-Encoding을 추가로 보내어 압축 방법을 알려준다
3. 분할 전송
- Transfer-Encoding으로 chunkded를 넣어서 보낸다. 이 경우 Content-Length는 있으면 안된다.
4. 범위 전송
- Content-Range를 넣어서 보낸다.
일반 정보에 대해서도 알아보자. 이 역시 자주 본 것들이다.
1. From
- 유저 에이전트의 이메일 정보다. 일반적으로 잘 사용하지 않으나 검색 엔진에서는 주로 사용하며, 요청 시 담아 보낸다.
2. Referer
- 이전 웹 페이지의 주소를 뜻한다. 예를 들어 A사이트 -> B사이트로 이동하면 B로 요청할 때 Referer로 A를 넣어서 보낸다.
이를 이용하며 유입 경로를 분석 가능하며, Referer 역시 요청 시 쓰인다. 참고로 Referrer의 오타이기도 하다.
3. User-Agent
- 유저 에이전트의 애플리케이션 정보다. 웹 브라우저 정보가 주로 담기며, 통계 정보를 추출하기 좋다. 또한, 장애나 버그 발생 시 어느 브라우저에서 오류가 발생했는지 파악하기도 좋다. 역시 요청 시 쓰인다.
4. Server
- 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보다. 에를 들어 Server: Apache/2.2.22(Debian)과 같이 작성되어 넘어온다. 응답에서 사용한다.
5. Date
- 메시지가 발생한 날짜와 시간을 넣는다. 응답에서 사용한다.
특별한 정보를 담는 헤더에 대해서 알아보자
1. Host
- 제일 중요한 헤더 중 하나이다. 요청한 호스트 정보(도메인)가 담긴다. 그냥 요청하면 같은 서버에 여러 애플리케이션이 동작하면 어떤 애플리케이션을 실행해야하는지 알 수가 없기 때문에 필수이다.
2. Location
- 페이지 리다이렉션 시 사용한다. 3XX 응답이 올 경우 페이지 리다이렉션을 사용해야하는데 이 때 Location 헤더가 있다면 해당 위치로 이동시킨다. 또는 201 응답에서 요청에 의해 생성된 리소스의 URI를 담을 때도 사용한다.
3. Allow
- 허용 가능한 메서드를 뜻한다. 405에서 포함해야하지만 잘 사용하지 않는다.
4. Retry-After
- 유저 에이전트가 다음 요청을 처리하기까지 기다려야하는 시간이다. 503 에러가 났을 경우, 서비스가 언제까지 불능일지 알려줄 수 있다. 하지만 실제로 사용하기 어려운 문제점이 있다.
(인증 헤더 2가지도 끼워넣어 알아보자)
1. Authorization
- 클라이언트의 인증 정보를 서버에 전달하는 헤더이다.
2. WWW-Authenticate
- 리소스 접근 시 필요한 인증 방법을 정의 하는 헤더이다. 401 에러(Unauthorized)와 함께 사용한다.