IT STUDY LOG
[HTTP] 02. HTTP 헤더 본문
# 학습 목표
- HTTP 헤더의 역할에 대해 이해할 수 있다.
- 표현, 콘텐츠 협상 등 다양한 헤더의 역할에 대해 알 수 있다.
# 학습 내용
1. HTTP 주요 헤더
- 요청에서 사용되는 헤더
- 요청 메세지 예시
GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive - 요청 헤더
헤더명 개요 설명 From 유저 에이전트의 이메일 정보 일반적으로 잘 사용하지 않음
검색 엔진에서 주로 사용
요청에서 사용Referer 이전 웹 페이지 주소 현재 요청된 페이지의 이전 웹 페이지 주소
A → B로 이동하는 경우 B를 요청할 때 Referer: A 를 포함해서 요청
Referer 를 사용하면 유입경로 수집 가능
요청에서 사용
referer는 단어 referrer의 오탈자이지만 스펙으로 굳어짐User-Agent 유저 에이전트 애플리케이션 정보 클라이언트의 애플리케이션 정보(웹 브라우저 정보, 등등)
통계 정보
어떤 종류의 브라우저에서 장애가 발생하는지 파악 가능
요청에서 사용Host 요청한 호스트 정보(도메인) 요청에서 사용
필수 헤더
하나의 서버가 여러 도메인을 처리해야 할 때 호스트 정보를 명시하기 위해 사용
하나의 IP 주소에 여러 도메인이 적용되어 있을 때 호스트 정보를 명시하기 위해 사용Origin 서버로 POST 요청을 보낼 때, 요청을 시작한 주소를 나타냄 여기서 요청을 보낸 주소와 받는 주소가 다르면 CORS 에러가 발생
응답 헤더의 Access-Control-Allow-Origin와 관련Authorization 인증 토큰(e.g. JWT)을 서버로 보낼 때 사용하는 헤더 “토큰의 종류(e.g. Basic) + 실제 토큰 문자”를 전송 (ex) Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
- 요청 메세지 예시
- 응답에서 사용되는 헤더
- 응답 메세지 예시
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed - 응답 헤더
헤더명 개요 설명 Server 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보 응답에서 사용
(ex) Server: Apache/2.2.22 (Debian)Date 메시지가 발생한 날짜와 시간 응답에서 사용
(ex) Date: Tue, 15 Nov 1994 08:12:31 GMTLocation 페이지 리다이렉션 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 리다이렉트(자동 이동)
201(Created): Location 값은 요청에 의해 생성된 리소스 URI
3xx(Redirection): Location 값은 요청을 자동으로 리다렉션하기 위한 대상 리소스를 가리킴Allow 허용 가능한 HTTP 메서드 405(Method Not Allowed)에서 응답에 포함
(ex) Allow: GET, HEAD, PUTRetry-After 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간 503(Service Unavailable): 서비스가 언제까지 불능인지 알려줄 수 있음
(ex) Retry-After: Fri, 31 Dec 2020 23:59:59 GMT(날짜 표기)
(ex) Retry-After: 120(초 단위 표기)
- 응답 메세지 예시
2. 표현 헤더
- 헤더의 구분
종류 | 설명 |
General headers | - 메시지 전체에 적용되는 헤더 - body를 통해 전송되는 데이터와는 관련 없음 |
Request / Response headers | - request : - fetch를 통해 가져올 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더로 요청 구체화, 컨텍스트 제공, 조건에 따른 제약 추가 등 가능 - response : 위치 또는 서버 자체에 대한 정보(이름, 버전 등)와 같이 응답에 대한 부가적인 정보를 갖는 헤더로 Vary, Accept-Ranges와 같이 상태 줄에 넣기에는 공간이 부족했던 추가 정보를 제공 |
Representation headers (Entity headers) | - body에 담긴 리소스 정보(컨텐츠 길이, MIME TYPE 등)을 포함 |
- HTTP 헤더와 바디
- HTTP 헤더
- 형식 : <field-name>:<field-value> (대소문자 구분 없음)
- 용도 : HTTP 전송에 필요한 모든 부가 정보 담기 위해 사용
- HTTP 바디
- 용도 : 메시지 본문(페이로드)로 표현 데이터를 전달
- HTTP 헤더
- 표현 헤더
- 개요
- 표현 데이터를 해석할 수 있는 정보(데이터 유형, 길이, 압축 정보 등)를 제공
- 요청, 응답 헤더에서 모두 사용
- 대표적인 표현 헤더
- Content-Type : 표현 데이터의 형식 설명
- Content-Encoding : 표현 데이터 인코딩
- Content-Language : 표현 데이터의 자연 언어
- Content-Length : 표현 데이터의 길이
- Transfer-Encoding: 전송 시 어떤 인코딩 방법을 사용할 것인가를 명시(현재는 Transfer-Encoding보다는 Content-Encoding을 사용하며, Transfer-Encoding을 사용하는 경우 chunked의 방식으로 사용)
- chunked 방식의 인코딩은 많은 양의 데이터를 분할하여 보내기 때문에 전체 데이터의 크기를 알 수 없기 때문에 표현 데이터의 길이를 명시해야 하는 Content-Length 헤더와 함께 사용할 수 없음
- 개요
3. 콘텐츠 협상 헤더
- 콘텐츠 협상
- 개요
- 클라이언트가 선호하는 표현 요청
- 협상 헤더는 요청 시에만 사용
- 헤더 종류
- Accept : 클라이언트가 선호하는 미디어 타입 전달
- Accept-Charset : 클라이언트가 선호하는 문자 인코딩
- Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
- Accept-Language : 클라이언트가 선호하는 자연 언어
- 예시
- 협상과 우선 순위
- Quality Values(q) 값을 사용하여 해결
- q는 0~1 사이의 값으로 클수록 높은 순위
- 생략하는 경우 1
- 개요
# 예시
GET /event
Accept-Language:ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
1. ko-KR;(q=1이 생략된 것)
2. ko;q=0.9
3. en-US;q=0.8
4. en;q=0.7
사진 출처 : 코드스테이츠 데브옵스 부트캠프 과정
'devops bootcamp 4 > 개발 및 배포' 카테고리의 다른 글
[HTTP] 04. REST API 문서 작성 (0) | 2023.03.23 |
---|---|
[HTTP] 03. 잘 설계된 HTTP API (REST API) (0) | 2023.03.22 |
[HTTP] 01. Cookie (0) | 2023.03.22 |
[(사전준비) 개발 환경 구축] 02. Docker 설치 (0) | 2023.03.22 |
[(사전준비) 개발 환경 구축] 01. Node.js 설치 (0) | 2023.03.22 |
Comments