Start Line
공통
요청
- HTTP 메서드
- 요청 url
GET / HTTP/1.1
응답
- 상태 코드와 메세지
HTTP/1.1 200 OK
공통
- Date
- Connection
- Content-Length
- Content-Type
- 컨텐츠 종류를 지정하고, 텍스트일 경우 문자열 인코딩 방식 지정
Content-Type: text/html; charset=utf-9
- +) application/json, image/gif, audio/midi, …
- Content-Encoding
Content-Encoding: gzip
- gzip, br, deflate 등의 알고리즘으로 압축해서 보낸다.
- 요청과 응답 전송 속도가 빨라지고, 데이터 소모량도 줄어든다.
- Cache-Control
요청 헤더
- User-Agent
- 브라우저, OS 정보
- 접속자 및 사용기기 통계를 낸다.
- Host
- 서버의 domain name
- 포트 정보도 포함할 수 있다.
- Referer
- Accept
- 클라이언트가 허용할 수 있는 파일 형식(MIME TYPE)
- 클라이언트가
Accept
로 원하는 형식을 보내면, 서버는 이를 바탕으로 헤더의 Content
를 설정한다.
- 예시
Accept: text/*, image/png, image/gif
Accept-Encoding: gzip, deflate
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
- Cookie
- 웹 서버가 클라이언트에 쿠키를 저장해 놓았다면 해당 쿠키 정보를
key=value
쌍으로 서버에 전송한다.
- Session ID
- Origin
- 요청이 어느 주소에서 시작되었는지
Origin: https://velog.io/@jummi10
- 보낸 주소와 받는 주소가 다르면 CORS 문제가 발생하기도 한다.
- If-Modified-Since
- 페이지가 수정되었으면 최신 페이지 요청을 위해 존재한다.
- 필드에 지정된 시간 이후로 변경이 없으면, 서버로부터 데이터를 전송받지 않는다.
Cache-Control
필드와 연관
- Authorization
- 인증 토큰 보낼 때 사용
- JWT 인증에 주로 사용
Authorization: Bearer xxx.xxx.xxx
응답 헤더
- Server
- 웹 서버 정보
Server: Apache/2.2.24
- Location
- 201 created, 301, 302 redirection 상태에서 리다이렉트할 위치 정보 지정
- Set-Cookie
- 클라이언트에 저장할 쿠키 정보 지정
- Expires(만료일), Secure(HTTPS에서만 사용할 것인지), Domain(같은 도메인에서만 사용 가능), HttpOnly(스크립트에서 접근 불가) 등 설정 가능
- Expires
- Access-Control-Allow-Origin
- 요청 Host와 응답 Host가 다르면 CORS 에러가 발생한다. 서버에서 해당 헤더에 프론트 주소를 적어주면 에러가 발생하지 않는다.
Access-Control-Allow-Origin: https://velog.io/@jummi10
- Allow
Allow: GET
Allow: POST
- 405 Method Not Allowed 를 반환한다.
- Content-Disposition
- 응답 본문을 브라우저가 어떻게 표시해야 할지 알려준다.
- inline(웹페이지 화면에 표시), attachment(다운로드)
- Content-Security-Policy
- 외부 파일(image, js, css, 폰트, iframe 등)을 불러오는 경우, 차단할 소스와 불러올 소스를 명시한다.
Body
공통
- 본문 데이터(메세지)
- 빈 한 줄로 헤더와 바디를 구분한다
요청 바디
- GET 메서드로 요청을 보내는 경우 바디는 생략한다.
응답 바디
- HTML, CSS, Javascript, image 등
출처