요청과 응답에 모두 사용되는 헤더입니다. 이 중에서 Content 시리즈는 엔티티 헤더라고 불립니다.
Date: Thu, 12 Jul 2018 03:12:27 GMT
Connection: keep-alive
Content-Length: 52
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip, deflate
Host : 서버의 도메인 네임(포트 포함)
Host: www.a.com
User-Agent : 요청을 보낸 사용자의 로컬 정보(os, browser), 접속자 통계 등에 활용
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Accept : 서버가 요청받고 응답 할 데이터의 타입
Accept: text/html
Accept: image/png, image/gif
Accept: text/*
Accept-Charset: utf-8
Accept-Language: ko, en-US
Accept-Encoding: br, gzip, deflate
Authorization : 인증 토큰(JWT든, Bearer 토큰이든)을 서버로 보낼 때 사용하는 헤더, API 요청시 토근 필요
Authorization: Bearer XXXXXXXXXXXXX
Origin : POST같은 요청을 보낼 때, 요청한 주소, 요청을 보낸 주소와 받는 주소가 다르면 CORS 문제가 발생
Referer : 이 페이지 이전의 페이지 주소, 어떤 페이지를 통해 왔는지 분석 가능(애널리틱스에 사용)
Referer: https://www.zerocho.com/category/JavaScript
Access-Control-Allow-Origin : 프론트 주소를 적어 CORS 문제 해결
Access-Control-Allow-Origin: www.zerocho.com
Access-Control-Allow-Origin: * // 모든 주소 CORS 요청 허용, 보안 취약
// 유사한 헤더
Access-Control-Request-Method
Access-Control-Request-Headers
Access-Control-Allow-Methods
Access-Control-Allow-Headers
CORS 요청 시에는 미리 OPTIONS 주소로 Access-Control-Request-Method로 실제로 보내고자 하는 메서드를 알리고, Access-Control-Request-Headers로 실제로 보내고자 하는 헤더들을 알립니다.
Allow가 붙은 헤더들은 Request에 대응되는 애들로, 서버가 허용하는 메서드와 헤더를 응답하는데 사용됩니다. Request랑 Allow가 일치하면 CORS 요청이 이루어지는 것이죠.
Allow : Access-Control-Allow-Methods랑 비슷하지만, CORS 요청 외에도 적용
Allow: GET // GET 요청만 받겠다.
Content-Disposition : 응답 본문을 브라우저에서 처리하는 방식
Content-Disposition: inline // 웹페이지 화면에 표시
Content-Disposition: attachment; filename='filename.csv' // 파일명으로 다운로드
Location : 300번대 응답이나 201 Created 응답일때 리다이렉트 될 주소
HTTP/1.1 302 Found
Location: / // '/' 주소로 리다이렉트
Content-Security-Policy : 로드 할 다른 외부 파일 지정, XSS 공격 방어
Content-Security-Policy: default-src 'self' // 자신의 도메인 파일들만 로드
Content-Security-Policy: default-src https:
Content-Security-Policy: default-src 'none'
Cache-Control : 캐싱에 관련된 옵션, 주로 GET요청에만 사용
Cache-Control: no-store // 캐싱 안함
Cache-Control: no-cache // 캐시 쓰기전 서버에 확인
Cache-Control: must-revalidate // 만료된 캐시만 서버에 확인
Cache-Control: public 또는 private // 공유 캐시 또는 개인 캐시
Cache-Control: public, max-age=3600 // 유효시간 1시간(초단위) 설정
Age : max-age 시간 내에서 몇초가 지났는지
Age: 60
Expires : 응답 컨텐츠 만료 기간, Cache-Control의 max-age가 있는 경우 이 헤더는 무시
Expires: Thu, 26 Jul 2018 07:28:00 GMT
ETag : HTTP 컨텐츠가 바뀌었는지를 검사, 같은 주소의 자원이더라도 컨텐츠가 달라지면 ETag값 변경
Etag: W/"3bf2-wdj3VvN8/CvXVgafkI30/TyczHk"
If-None-Match : 서버측에서 ETag를 감시하다가 달라지면 다시 컨텐츠를 전송하도록 요청
If-None-Match: W/"3bf2-wdj3VvN8/CvXVgafkI30/TyczHk"
Set-Cookie : 서버에서 클라이언트(브라우저)한테 이런 이런 쿠키를 저장하라고 명령하는 응답 헤더
Set-Cookie: 키=값; 옵션들
Expires: 쿠키 만료 날짜
Max-Age: 쿠키 수명, Expires는 무시
Secure: https에서만 쿠키 전송
HttpOnly: 자바스크립트에서 쿠키에 접근x, XSS를 방어하기 위해 필수
Domain: 도메인이 일치하는 요청에서만 쿠키 전송
Path: 패스와 일치하는 요청 요청에서만 쿠키 전송
써드 파티 쿠키
도메인이 다른 쿠키로 클라이언트를 추적하고 있는 쿠키이다. 구글이나 페이스북같은 곳이 써드 파티 쿠키를 적극적으로 사용한다.
Cookie : 클라이언트가 서버한테 쿠키를 보내줄때 사용하는 요청 헤더
Cookie: 키=값; 키=값;
X-로 시작하는 헤더
요청이 어디서부터 건너왔는지 알려주는 헤더X-Forwarded-For: 1.2.3.4, 5.6.7.8, 9.10.11.12 // 현재까지 거쳐온 서버의 IP X-Forwarded-Host: www.a.com // 원래 서버의 호스트명 X-Forwarded-Proto: https // 원래 서버의 프로토콜 // 위 3가지를 동시에 처리하는 표준 헤더 Forwarded: for=1.2.3.4; host=www.a.com; proto=https; by=5.6.7.8, 9.10.11.12
frame, iframe, object 태그 안에서 페이지를 렌더링하는 것을 방지
X-Frame-Options: DENY // 클릭재킹(내가 무언가를 눌렀는데, 실제로는 그게 아니라 다른 게 눌리는 해킹 방법) 방지 X-Frame-Options: SAMEORIGIN // 자신의 페이지를 불러오는 것은 허용(iframe) X-Frame-Options: ALLOW-FROM https://www.a.com // 특정한 사이트 로드 허용