공통헤더
request, response에 모두 사용되는 헤더이다.
- Date
- HTTP 메시지가 만들어진 시각. 자동생성된다.
- ex) Date: Thu, 12 Jul 2018 03:12:27 GMT

- Connection
- HTTP 1.1을 사용한다면 default로 keep-alive로 설정되어 있다. 사실상 아무 의미가 없다. HTTP 2에서는 해당 형식이 제외되었다.
- ex) Connection: keep-alive
- Cache-Control
- 중요한 부분이다. 이 부분과 관련해서는 추후 포스팅할 예정이다.
- 304를 받았다면 이 부분을 의심해보자.
- Cache-Control 속성은 누가 응답을 어떤 조건에서, 얼마나 캐시할 수 있는지 정의한다.
- Content-Length
- request, response 메시지의 본문 크기를 바이트 단위로 표시해준다. 메시지 크기에 따라 자동 생성된다.
- ex) Content-Length: 88052

- Content-Type
- 메시지 타입을 알려준다.
- 컨텐츠 타입(MIME), 문자열 인코딩(utf-8 등)을 알려준다.
- Accept 헤더, Accept-Charset 헤더와 대응된다.

- Content-Language
- 사용자의 언어를 의미한다.
- 즉, 요청이나 응답의 언어가 아니다.
- 한국인이 독일의 사이트에 접속하더라도 Content-Language는 ko-KR일 수 있다.
- Content-Encoding
- 압축된 방식이다.
- response data를 br, gzip, deflate 등의 알고리즘으로 압축해서 보내면 브라우저가 알아서 해제하여 사용한다.
요청헤더
- Host
- 서버의 도메인 네임(포트 포함)
- 반드시 하나가 존재해야 한다.

- User-Agent
- 현재 사용자가 어떤 클라이언트(운영체제, 브라우저 등)를 이용해 요청을 보냈는지 알려준다.
- 즉, 이것을 활용해 접속자 통계를 산출할 수 있다.

- Accept
- 어떤 타입의 데이터를 원하는지 명시할 때 사용한다.
- 콤마로 여러 타입을 동시에 적어줄 수도 있고 *(와일드카드)를 활용할 수도 있다.

- Authorization
- 인증 토큰을 서버로 보낼 때 사용하는 헤더이다.
- API 요청 등을 할 때 토큰이 없으면 거절당하기 때문에 이 때 사용한다.
- 토큰의 종류를 먼저 알리고 그 뒤에 실제 토큰 문자를 전송한다.
- Authorization: Bearer XXXXXXXXXXXXX
- Origin
- 요청이 어느 주소에서 시작되었는지 나타낸다.
- 요청을 보낸 주소와 받는 주소가 다르면 CORS 문제가 발생한다.
- CORS: Cross Origin Resource Sharing: 도메인/포트가 다른 서버로 클라이언트가 요청했을 때 브라우저가 보안상의 이유로 API를 차단하는 문제
- Referer
- 현재 페이지 이전의 주소가 담겨 있다.
- Cookie
- 서버로부터 받은 쿠키를 다시 서버로 보낼 때 사용한다.
응답헤더
- Access-Control-Allow-Origin
- 요청을 보내는 front 주소와 받는 backend 주소가 다르면 CORS 에러가 발생한다. 이를 방지하기 위해 서버에서 해당 헤더에 Front 주소를 적어주어야 한다.
- 프로토콜, 서브도메인, 도메인, 포트 중 하나만 달라도 CORS 에러가 발생한다. *(와일드카드)를 활용할 수 있다. 하지만 그만큼 보안이 취약해진다.
- Allow
- Access-Control-Allow-Orgin과 비슷하지만, CORS 요청 외에도 적용된다는 것에 차이점이 있다.
- GET은 되고 POST는 허용하지 않는 경우, 405 Method Not Allowed 에러를 응답하면서 헤더에 GET을 같이 보내면 된다. 즉, GET 요청만 받겠다는 의미이다.
- Content-Disposition
- response body를 브라우저가 어떻게 표시해야할지 알려주는 헤더이다.
- Location
- 300번대 응답이나 201 Created 응답일 때 어느 페이지로 이동할지 알려준다.
- Content-Security-Policy
- 다른 외부 파일들을 불러오는 경우, 차단할 소스와 불러올 소스를 명시한다.
- Server
- 사용하고 있는 웹서버의 소프트웨어에 대한 정보를 포함한다.
- Set-Cookie
- 쿠키를 생성하고 브라우저에 보낼 때 사용한다.
'CS > 네트워크' 카테고리의 다른 글
로드밸런싱 (0) | 2021.06.23 |
---|---|
Authentification과 Authorization의 차이 (0) | 2021.05.25 |
GET과 POST (0) | 2021.05.18 |
TCP의 3 way handshake와 4 way handshake (0) | 2021.05.17 |
TCP/UDP의 Header (0) | 2021.05.17 |