HTTP 전송에 필요한 모든 부가정보가 들어간다.
[ 헤더분류 ]
수 많은 헤더중 HTTP BODY를 설명하는 헤더들을 표현 헤더라 칭한다.
서로 주고 받는 데이터의 형식을 정한다. json/xml/html로 표현한다. 의 표현
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip
Content-Language: en
Content-Length:10
helloWorld
클라이언트가 선호하는 표현 요청
Quality Values(q)
1. 0~1, 클수록 높은 우선순위 (생략시 1)
ex) Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
2. 구체적인것이 우선이다.
3. 구체적인것을 기준으로 미디어타입을 맞춘다.
Authorization: 클라이언트 인증 정보를 서버에 전달
WWW-Authenticate: 리소스 접근시 필요한 인증방법정의. 401과사용
환영페이지를 그냥 입장했을때 '안녕하세요 손님' 이라고 나온다. 로그인을 하고 환영페이지를 입장했을때도 '안녕하세요 손님' 이라고 나온다.
why?
쿠키가 없어서다.
HTTP는 무상태이므로 클라이언트와 서버는 요청응답을 주고받은 후 연결을 끊어버려 상태를 유지하지않는다.
이때는 상태유지를 써야하는데 쿠키를 사용한다.
쿠키는 로그인을하면 서버에서 Set-Cookie: user=김소현
이라는 쿠키를 보내줘서 ,로컬에서 쿠키저장소에 쿠키Cookie: user=김소현
를 넣는다. 쿠키는 모든 요청에서 쿠키를 무조건 조회하므로 환영페이지를가면 '안녕하세요 김소현' 이라고 나온다.
세션쿠키 : 만료날짜를 생략하면 브라우저 종료시 까지만 유지
영속쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지 expires
쿠키의 도메인을 적을수있다. 아무사이트에 들어갈때마다 막 쿠키가 생기면안되니까..
명시 : 명시한 문서 기준 도메인 + 서브 도메인 포함 (원래홈페이지+dev페이지)
생략 : 현재 문서 기준 도메인만 적용
쿠키는 경로도 적을수있다.
이 경로를 포함한 하위 경로 페이지만 쿠키 접근
일반적으로 path=/
루트로 지정
path=/home 지정시 /home (o) /home/lev1(o) /hello (x)
Secure : http,https구분하지않고 전송했는데 https 인경우에만 전송
HttpOnly : XSS 공격방지, 자바스크립트에서 접근불가, 오직 HTTP 전송에만 사용
SameSite : 요청도메인과 쿠키에 설정된 도메인이 같을때만 쿠키 전송
정리
HTTP헤더는 HTTP 전송에 필요한 모든 부가정보를 포함한다.
그중에서도 표현헤더는 http body의 정보를 설명하는 헤더를 표현헤더라고한다.HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 // 표현데이터 형식 Content-Encoding: gzip // 표현데이터 압축방식 Content-Language: en // 표현데이터 언어 Content-Length:10 // 표현데이터 본문 길이
클라이언트에서 요청시 받고싶은 우선순위를 정할수있다.
우선순위는 퀀티티밸류가 0-1까지있는데 1이 높은우선순위다. 한국어 1 영어 0.9로 요청하고 서버는 기본어:독일어 영어가 있다고 했을때, 우선순위에따라 영어로 반환해준다.
또한 구체적으로 적을수록 우선순위가 높아진다.
서버에서 클라이언트한테 전송할때 방식이 4가지가있다. 단순전송은 서버에사 클라이언트에게 단순하게 전송해주는거고, 압축전송은 압축해서 보내주는것 content-encoding필수, 분할전송은 바이트형식으로 분할한다 transfer-encoding:chunked, 범위전송은 content-range
쿠키는 항상 서버에 전송된다. 따라서 최소한의 자원만 사용해야하고 (세션id, 인증토큰) 만약에 서버에 쿠키를 전송하기싫고 웹브라우저내에서만 보유하고싶으면 local srorage를 이용하면된다.
쿠키는 경로를 설정할수있다. path=/로 하면 하위 폴더내에는 다 접근이 가능하다.
쿠키는 도메인을 설정할수있다. 명시: 기존도메인+dev도메인 생략: 현재도메인
쿠키의보안으로는 https만사용할수있고 오직 http에서만 사용할수있고 현재도메인과 쿠키도메인이 같을때만 쿠키를 전송할수있다.