- HTTP 헤더의 용도
HTTP 전송에 필요한 모든 부가정보
필요시 임의의 헤더 추가 가능
최근 표준에서는 과거 Entity라고 사용되던것을 표현(Representation)으로 변경됨
표현 = 표현 메타데이터 + 표현 데이터
메시지 본문(페이로드)을 통해 표현 데이터 전달
표현은 요청이나 응다엡서 전달할 실제 데이표현 헤더는 표현 데이터를 해석할 수 있는 정보를 제공
- 표현
표현 헤더는 전송, 응답 둘다 사용
Content-Type : 표현 데이터의 형식
미디어 타입, 문자 인코딩
ex) application/json
Content-Encoding : 표현 데이터의 압축 방식
표현 데이터를 압축하기 위해 사용
데이터를 읽는쪽에서 인코딩 헤더의 정보를 통해 압축 해제
Content-Language : 표현 데이터의 자연 언어
표현 데이터의 자연 언어를 표현
ex) en, ko
Content-Length : 표현 데이터의 길이
바이트 단위
Transfer-encoding(전송 인코딩)을 사용하면 Content-Length 사용하면 안됨
- 협상(content negotiation)
클라이언트가 선호하는 표현 요청
협상 헤더는 요청시에만 사용
Accept : 클라이언트가 선호하는 미디어 타입 전달
Accept-Charset : 클라이언트가 선호하는 문자 인코딩
Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
Accept-Language : 클라이언트가 선호하는 자연 언어
협상과 우선 순위
Quality Values(q)
0 ~ 1 이며 클수록 높은 우선순위 이고 생략하면 1
ex) ko;q=0.9,en;1=0.7
구체적인 것이 우선
ex) text/*(2), text/plain(1)
구체적인 것을 기준으로 미디어 타입을 맞춤
- 전송방식
#단순 전송 Content-Length
#압축 전송 Content-Encoding
#분할 전송 Transfer-Encoding => Content-Length 전송 하면 안됨 , 예측 불가
#범위 전송 Range, Content-Range
- 일반정보
From : 유저 에이전트의 이메일 정보
Referer : 이전 웹 페이지 주소
유입경로를 알 수 있음
요청에서 사용
User-Agent : 유저 에이전트 애플리케이션 정보
Server : 요청을 처리하는 오리진 서버의 소프트웨어 정보
응답에서 사용
#Origin 서버 : 실제 응답을 해주는 서버
Date : 메시지가 발생한 날짜와 시간
응답에서 사용
- 특별한 정보
Host : 요청한 호스트 정보
요청에서 사용하며 필수
하나의 IP 주소(서버)에 여러 도메인이 적용되어 있을 때
Location : 페이지 리다이렉션
3XX 응답의 결과에 Location 헤더가 있으면 Location 위치로 이동
Allow : 허용가능한 HTTP 메서드
405(Method Not Allowed)에서 응답에 포함해야함
Retry-After : 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
503(Service Unavailable) : 서비스가 언제까지 불능인지 알려줄 수 있음
- 인증
Authorization : 클라이언트 인증 정보를 서버에 전달
WWW-Authenticate : 리소스 접근시 필요한 인증 방법 정의
401(Unauthorized)응답과 함께 사용
- 쿠키
Set-Cookie : 서버에서 클라이언트로 쿠키 전달(응답)
Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달
쿠키를 사용하지 않으면 사용자를 알리기 위해 모든 요청과 링크에 사용자 정보를 포함해야함
쿠키는 모든 요청에 쿠키 정보를 자동 포함
#사용처
사용자 로그인 세션 관리(직접적으로 쿠키 값을 주는것이 아닌 서버에서는 세션에 담고 세션 ID를 쿠키를 통해 넘겨줌)
광고 정보 트래킹
#쿠키 정보는 항상 서버에 전송됨
네트워크 트래픽 추가 유발
최소한의 정보만 사용해야 함(세션 ID, 인증 토큰)
서버에 전송하지 않고 웹 브라우저 내부에 데이터를 저장하고 싶으면 웹 스토리지 사용
보안에 민감한 데이터는 저장하면 안됨
#생명 주기
expires를 통해 GMT 기준으로 만료일 되면 쿠키 삭제
max-age를 통해 초단위로 설정 하거나 0 혹은 음수를 주면 쿠키 삭제
세션 쿠키 : 만료날짜를 생략하면 브라우저 종료시 까지만 유지
영속 쿠키 : 만료날짜를 입력하면 해당 날짜까지 유지
#쿠키 - 도메인
domain=example.com
명시 : 명시한 문서 기준 도메인 + 서브 도메인 포함
ex) domain=example.com
dev.example.com 까지도 쿠키 접근
생략 : 현재 문서 기준 도메인만 적용
#쿠키 - path
path=/home
이 경로를 포함한 하위 경로 페이지만 쿠키 접근
일반적으로 paht=/ 루트로 지정
#쿠키 - 보안
Secure
쿠키는 http,https를 구분하지 않고 전송 하지만 Secure를 적용하면 https인 경우에만 전송
HttpOnly
XSS공격 방지
자바스크립트에서 접근 불가
HTTP 전송에만 사용
SameSite
XSRF 공격 방지
요청 도메인과 쿠키에 설정된 도메인이 같은 경우만 쿠키 전송
출처 : https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
'BackEnd 학습 > 인터넷' 카테고리의 다른 글
| HTTP 헤더 - 캐시와 조건부 요청/호스팅 (0) | 2022.11.01 |
|---|---|
| HTTP 상태 코드 (0) | 2022.10.11 |
| HTTP활용 (0) | 2022.09.29 |
| HTTP 메서드 (0) | 2022.09.25 |
| HTTP (0) | 2022.09.18 |