- 1) HTTP 헤더 개요
- 2) 표현
- 3) 콘텐츠 협상
- 4) 전송 방식
- 5) 일반 정보
- 6) 특별한 정보
- 7) 인증
- 8) 쿠키
-----------------------------------------------------------------------------------------------------------------------------------------
1) HTTP 헤더 개요
# HTTP 헤더 복습
- HTTP 전송에 필요한 모든 부가정보
# HTTP 헤더의 과거(RFC2616)
# HTTP 헤더의 현재 (RFC7230~7235)
-----------------------------------------------------------------------------------------------------------------------------------------
2) 표현
# 1. Content-Type : 표현 데이터의 형식
- 리소스를 HTML or JSON 뭘로 전송(표현) 할거야?? = 메시지 바디에 들어간 내용이 뭔지 표현
- application/json 의 경우 기본 인코딩 : UTF-8
# 2. Content-Encoding : 표현데이터의 압축방식
- 압축정보를 줘야 읽는 쪽에서 풀 수 있음
- gzip 압축, identity : 같다(압축X)
# 3. Content-Language : 표현데이터의 자연 언어
- ex) 큰 공식사이트의 경우 apple.com 언어 바꿀 때
# 4. Content-Length : 바이트단위
-----------------------------------------------------------------------------------------------------------------------------------------
3) 콘텐츠 협상
- 클라이언트가 선호하는 표현을 서버에 요청
- ex) 클라이언트가 한국에 살면 서버에 최대한 한국어 달라고 요청
# Accept-Language
# Accept-Language 복잡한 예시
- ko-KR;q1 가장 높다 -> 숫자 내림차순으로 우선순위
# Accept
-----------------------------------------------------------------------------------------------------------------------------------------
4) 전송 방식
1) 단순 전송
- 한번에 요청, 한번에 받기
2) 압축 전송
- 서버에서 압축 후 전송
- Content-Encoding 정보 추가 해야함 -> 클라이언트가 풀 수 있음
3) 분할 전송
- Transfer-Encoding : chunked 추가, chunk는 덩어리라는 뜻
- 용량 큰 것을 분할하여 전송 ( 크면 기다려야 할 수도 있다. -> 먼저 온 것부터 차례로 보여줌 )
- Content-Length 넣으면 안됨 ( 이유1. 모른다. 이유2. chunk마다 byte표시가 있다. )
4) 범위 전송
- ex) 이미지 받다가 끊김 -> 다시 요청할 때 못받은 범위 요청 ( 처음부터 다시 요청하면 용량 아까움 )
- Content-Range 정보 추가
-----------------------------------------------------------------------------------------------------------------------------------------
5) 일반 정보
1) From : 잘 안씀
2) Referer ( 많이 씀) : 이전 사이트 정보
- 요청에서 사용, 유입경로 분석 가능
3) User-Agent
- 클라이언트의 애플리케이션(웹 브라우저) 정보
- ex) 특정 브라우저의 버그 찾기
- 통계 정보, 요청에 사용
4) Server
- ORIGIN Server : 진짜 응답해주는 서버 = 마지막 서버 = 표현데이터 만들어주는 서버
- ORIGIN Server의 소프트웨어 정보
- 응답에서만 사용
-----------------------------------------------------------------------------------------------------------------------------------------
6) 특별한 정보
1) Host : 진짜 중요!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!( 몇없는 필수값 헤더 중 하나 )
- 하나의 IP주소에 여러 도메인이 적용되어 있을 때
- 요청에서 사용
# Host 예시
- 하나의 서버에 여러개의 애플리케이션이 다른 도메인으로 구동되어있다.
- /hello가 aaa.com bbb.com ccc.com중 어디서 들어가야할지 모름 ( IP로만 통신하기 때문에 ) (=요청메시지에 IP정보만)
- 그 뒤로 Host가 필수값 헤더가 됨
- 서버가 Host 값 보고 가상 호스팅
2) Location : 상태코드 3xx 에서 배움
3) Allow : 허용가능한 HTTP 메서드
- 많이 안 씀
4) Retry-After
- 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
- 503 일때 서비스가 언제까지 불능인지 알려줌
-----------------------------------------------------------------------------------------------------------------------------------------
7) 인증
1) Authorization
- value값은 인증 매커니즘에 따라 달라짐 ex) OAuth
2) WWW-Authenticate
- 401 오류가 날 때 WWW-Authenticate 헤더 추가, 뒤의 값은 "인증하려면 이대로 만들어"
-----------------------------------------------------------------------------------------------------------------------------------------
8) 쿠키
![]() |
![]() |
![]() |
![]() |
# 쿠키 미사용 대안 : 쿼리 파라미터에 사용자 정보를 넣자
![]() |
![]() |
![]() |
# 쿠키
![]() |
![]() |
![]() |
- 쿠키 받으면 그 서버에 요청 보낼 때마다 쿠키저장소를 뒤져서 쿠키값 무조건 꺼내서 전송
- set-cookie : sessionid, 만료시간, 허용 도메인, 보안정보
- ex) 첫 로그인때 홍길동 ->세션ID 로 변환 후 서버 DB에 저장, 클라이언트에 세션ID로 반환 -> 클라이언트는 요청마다 세션ID를 전송
- expires 기간 되면 삭제, max-age : 초단위
- 도메인으로 1차필터, Path로 2차 필터
출처 : 인프런 김영한님의 강의를 수강 후 정리한 내용입니다.
꾸준히 다시보자.
1. 220630
2. 220714
3. 220819
'Java, Spring > HTTP 웹 기본 지식' 카테고리의 다른 글
Section 8. HTTP 헤더2 - 캐시와 조건부 요청 (0) | 2022.06.24 |
---|---|
Section 6. HTTP 상태 코드 (0) | 2022.06.23 |
Section 5. HTTP 메서드 활용 (0) | 2022.06.22 |
Section 4. HTTP 메서드 (0) | 2022.06.19 |
Section 3. HTTP 기본 (0) | 2022.06.18 |