본문 바로가기

이것저것 스터디📚/CS 스터디

HTTP 헤더 구조

- HTTP는 웹 문서나 데이터를 전송하기 위한 규약이고 이 규약에 따라 클라이언트와 서버는 서로 메시지를 교환한다.

- HTTP 헤더에는 이 메시지 교환 과정에서 필요한 부가적인 정보를 담는 부분이다.

- HTTP 메시지는 start-line, headers, empty line, body로 이루어져 있다.

 

- HTTP 헤더는 크게 4가지로 분류된다

  - General Header(공통 헤더)

  - Request Header(요청 헤더)

  - Response Header(응답 헤더)

  - Entity Headder(엔티티 헤더)


General Header

- 요청 및 응답의 메시지 모두에서 필수적으로 포함되는 헤더이지만,  컨텐츠에는 적용되지 않는 헤더

- Date : 요청과 응답시에 자동으로 만들어지는 헤더로써, 만들어진 날짜와 시간을 포함한다.

- Connection : 현재 전송이 완료된 후 네트워크 접속을 유지할지 말지를 표시한다.

  - Keep-alive : 지속 연결

  - close : 연결 종료

- Cache-Control : 캐싱을 허용할지 허용하지 않을지 정하기 위해 사용된다.

 

Entity Header

- HTTP 요청 또는 응답 메시지의 실제 본문(Entity body)에 대한 정보를 제공하는 헤더

 

- Content-Type(응답 헤더 및 요청 헤더) : 메시지 본문의 데이터 형식(HTML, JSON, XML 등) 지정한다.

- 예시 : Content-Type: application/json; charset=utf-8

 

- Content-Length(응답 헤더 및 요청 헤더) : 메시지 본문의 길이(바이트)를 나타낸다.

- 예시 : Content-Length: 1024

 

- Content-Encoding(응답헤더) : 메시지 본문의 압축 방법을 나타낸다.

- 예시 : Content-Encoding: gzip

 

- Content-Langauge(응답 헤더) : 메시지 본문의 언어를 지정한다.

- 예시 : Content-Language: en-US

 

Request Header

- HTTP 요청 헤더는 서버로 요청할 데이터의 정보가 담겨있는 헤더

- Host : 서버의 도메인 네임과 서버가 현재 Listening 중인 TCP 포트를 지정한다. 만약 포트가 지정되지 않으면 요청된 서버의 기본포트를 의미한다.

 

- User-Agent : 현재 사용자가 어떤 클라이언트(운영체제와 브라우저를 포함한)를 이용해 요청을 보냈는지 확인할 수 있다.

- Accept : 요청을 보낼 때 서버에게 어떤 타입으로 응답을 보내줬으면 좋겠다고 명시한다.

- Authorization : 사용자가 서버에 인가된 사용자임을 증명할 때 사용한다.

 

Response Header

- 위치 또는 서버 자체에 대한 정보(이름, 버전)과 같이 응답에 대한 부가적인 정보를 갖는 헤더

 

- Access-Control-Allow-Origin

  - 요청을 보내는 클라이언트 주소와 요청을 받는 백엔드 주소가 다르면 CORS 에러가 발생한다.

  - 이때, Access-Control-Allow-Origin 헤더에 클라이언트의 주소를 적으면 에러가 발생하지 않는다.

 

- Allow : 해당 엔티티에 대해 서버 측에서 지원 가능한 HTTP 메소드의 리스트를 나타낸다.

- Set-Cookie : 서버측에서 클라이언트에게 세션 쿠키 정보를 설정


* 정리

HTTP는 웹 문서나 데이터를 전송하기 위한 규약이고 이 규약에 따라 클라이언트와 서버는 서로 메시지를 교환하는데, HTTP 헤더에는 이 메시지 교환 과정에서 필요한 부가적인 정보를 담는다. HTTP 헤더는 공통헤더, 요청헤더, 응답헤더, 엔티티 헤더 크게 4가지로 분류된다.

공통 헤더는 요청과 응답에 필수로 포함되는 헤더로, Date(만들어진 날짜, 시간), Connection(현재 전송 이후 네트워크 접속을 유지할지 여부) 등을 표시한다. 요청헤더에는 서버로 요청할 데이터의 정보가 담겨있고, 응답헤더에는 서버 자체에 대한 정보(이름, 버전)과 같이 응답에 대한 부가적인 정보가 담겨있다. 엔티티 헤더의 경우 요청 또는 응답 메시지의 실제 본문(Entity body)에 대한 정보를 제공하는 헤더로 Content-Type, Content-Length 등이 담겨있다.


참고 :  https://wonit.tistory.com/308

https://gmlwjd9405.github.io/2019/01/28/http-header-types.html

'이것저것 스터디📚 > CS 스터디' 카테고리의 다른 글

CORS란 무엇인가?  (1) 2023.10.16
Keep-Alive 헤더  (0) 2023.09.25
HTTPS 인증서를 받아오는 방식  (0) 2023.09.18
HTTP 1.0과 HTTP 1.1의 차이  (0) 2023.09.18
Proxy와 Reverse Proxy의 차이는?  (0) 2023.09.18