HTTP 헤더와 본문으로 구성되어 있다. HTTP 본문에는 실제로 통신과정에서 주고 받을 컨텐츠가 담겨져 있다.
HTTP헤더는 HTTP메시지(request/response)와 본문에 대한 정보를 말해주고 있다.
해당 메시지가 제공하는 기능에 대한 최소한의 정보가 정리된 요약본이다.
- 요청과 응답에 모두 사용되는 헤더
HTTP 메시지가 만들어진 시각
일반적으로 HTTP/1.1을 사용하며 Connection은 기본적으로 keep-alive로 되어있다.
요청과 응답 메시지의 본문 크기를 바이트 단위로 표시. 메시지 크기에 따라 자동으로 만들어진다.
웹 뷰에서, 일반 모바일 브라우저에서 304라는 응답 코드를 주면 이녀석을 의심 해보자.
컨텐츠의 타입(MIME)과 문자열 인코딩(utf-8 등등)을 명시할 수 있다.
사용자의 언어. ex) ko, ja, en
응답 컨텐츠를 br, gzip, deflate 등의 알고리즘으로 압축해서 보내면, 브라우저가 알아서 해제해서 사용한다.
서버의 도메인 네임. Host 헤더는 반드시 하나가 존재해야 한다.
가장 흔하게 보고 사용하는 헤더이다. 현재 사용자가 어떤 클라이언트(운영체제, 앱, 브라우저 등)를 통해 요청을 보냈는지 알 수 있다.
클라이언트가 허용할 수 있는 파일 형식(MIME TYPE)
ex1) Accept: text/html (HTML 형식인 응답을 처리하겠다)
ex2) Accept: image/png, image/gif
ex3) Accept: text/* 콤마로 여러 타입을 동시에 적어줄 수도 있고, *(와일드카드)로 텍스트면 ok라고 요청할 수 있다.
ex4) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
웹서버가 클라이언트에 쿠키를 저장해 놓았다면 해당 쿠키의 정보를 이름-값 쌍으로 웹서버에 전송한다.
POST같은 요청을 보낼 때, 요청이 어느 주소에서 시작되었는지를 나타내는데 이때 보낸 주소와 받는 주소가 다르면 CORS 문제가 발생하기도 한다.
※ CORS란?
페이지가 수정되었으면 최신 버전 페이지 요청을 위한 필드
Authorization 헤더는 인증 토큰을 서버로 보낼 때 사용하는 헤더. API 요청같은 것을 할 때 토큰이 없으면 거절당하기 때문에 이 때, Authorization을 사용한다. JWT(Json Web Token) 을 사용한 인증에서 주로 사용 한다. ex) Authorization: Bearer xxx.xxx.xxx
웹서버 정보를 나타낸다.
요청 Host와 응답 Host가 다르면 CORS 에러가 발생하는데 서버에서 응답 메시지 Access-Control-Allow-Origin 헤더에 프론트 주소를 적어주면 에러가 발생하지 않는다. ex) Access-Control-Allow-Origin: goddaehee.tistory.com
- Access-Control-Request-Method : 실제로 보내려는 메서드
- Access-Control-Request-Headers : 실제로 보내려는 헤더
- Access-Control-Allow-Methods : 서버가 허용하는 메서드
- Access-Control-Allow-Headers : 서버가 허용하는 헤더
Allow 헤더는 CORS 요청 외에도 적용된다. ex) Allow: GET 위와 같은 경우는 GET 요청만 받는다. POST 와 같은 경우는 405 Method Not Allowed 에러 Return 한다.
응답 본문을 브라우저가 어떻게 표시해야 할지 알려주는 헤더.
- inline : 웹페이지 화면에 표시
- attachment : 다운로드
300번대 응답이나 201 Created 응답일 때 어느 페이지로 이동할지를 알려주는 헤더
ex ) HTTP/1.1 302 Found Location: /login 위와 같은 응답시 브라우저는 /login 주소로 리다이렉트합니다.
다른 외부 파일들을 불러오는 경우, 차단할 소스와 불러올 소스를 여기에 명시할 수 있다. 하나의 웹 페이지는 다양한 외부 소스들을 불러온다. (이미지, JS, CSS, 폰트, 아이프레임 등)
ex) Content-Security-Policy: default-src 'self' (자신의 도메인의 파일들만 가져올 수 있다) Content-Security-Policy: default-src https: (https를 통해서만 파일을 가져올 수 있다) Content-Security-Policy: default-src 'none' (못가져 오게 만듬) https:로 지정하면 https를 통해서만 파일을 가져올 수 있게 됩니다. 'none'으로 지정하면 가져올 수 없습니다.