일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 메서드
- CodeState 후기
- 백내장
- 백내장 다초점렌즈 삽입술
- 해시
- 보험금 지급거절
- 코드스테이츠 부트캠프 합격 후기
- 에이치엘비
- 코테 합격후기
- Spring
- Code States 백엔드 합격 후기
- Gamsgo
- 코드스테이츠 합격
- 금융감독원 민원신청
- 코드스테이츠 백엔드 후기
- 코드 스테이츠 백엔드 교육과정
- 코드스테이츠 백엔드 교육과정
- 자바
- 코드스테이츠 백엔드 부트캠프 합격
- 백내장 금감원
- 백준 알고리즘
- 금감원
- HLB
- 금감원 백내장 민원
- Java
- 겜스고
- 금융감독원
- 코드스테이츠 부트캠프
- 코드스테이츠 합격 후기
- codestates 국비지원 1기 합격 후기
Archives
- Today
- Total
개발하는 동그리
[네트워크] HTTP 헤더 본문
반응형
RFC 723x
Representation = representation Metadata + Representation Data
표현 = 표현 메타 데이터(표현 헤더) + 표현 데이터
- 메시지 본문(페이로드 = payload)을 통해 표현 데이터 전달
- 표현은 요청이나 응답에서 전달할 실제 데이터
- 표현 헤더는 데이터 유형( html, json ), data 길이, 압축 정보 등을 제공하고 표현 메타데이터와 페이로드 메시지를 구분해야 한다.
표현
표현 헤더 : 전송,응답에 둘 다 사용
- Content-Type : 표현 데이터의 형식 ( html, json )
- 미디어 타입, 문자 인코딩
- 예시) text/html; charset=utf-8, application/json, image/png
- Content-Encoding : 표현 데이터의 압축방식
- 표현 데이터를 압축하기 위해 사용하고 어떤 방식으로 사용했는지 전달
- 예시) gzip, deflate, identity
- Content-Language : 표현 데이터의 자연 언어
- 예시) ko, en, en-US
- Content-Length : 표현 데이터의 길이
- 바이트 단위
- Transfer-Encoding(전송 코딩)을 사용하면 Content-Length를 사용하면 안 된다.
협상 (Contents Negotiation)
: 클라이언트가 원하는 표현 요청 (우선순위 있음)
- Accept : 클라이언트가 선호하는 미디어 타입 요청
- Accept-Charset : 클라이언트가 원하는 문자 인코딩 요청
- Accept-Encoding : 클라이언트가 원하는 압축 인코딩 요청
- Accept-Language : 클라이언트가 원하는 언어 요청
전송 방식
- 단순 전송 : Content-length 알 수 있을 때 사용
- 압축 전송 : Content-Encoding을 사용하여 압축해서 전송 ( Encodig 입력 필수 )
- 분할 전송 : Transfer-Encoding 은 용량이 클시에 서버에서 만들어지는 대로 분할해서 전송받는 것 (Content-Length 사용불가)
- 범위 전송 : Content-Range 는 범위를 설정해서 전송받는 것
일반 정보
- From : 유저 에이전트의 이메일 정보
- Referer : 현재 요청된 페이지의 이전 페이지 주소, 유입 경로 분석할 때 사용, 요청해서 사용
- User-Agent : 클라이언트의 애플리케이션(웹 브라우저) 정보, 통계 확인해서 장애 발생 확인 가능
- Server : 요청에 응답하는 서버를 ORIGIN 서버라 부르고 그 ORIGIN 서버의 소프트웨어 정보
- Data : 메시지가 발생한 날짜와 시간 (응답에서만 사용)
특별한 정보
- Host (요청한 호스트 정보) (필수)
- 하나의 서버가 여러 도메인을 처리할 때 세부 주소로 이동 ( 가상 호스트 )
- ex). Host : www.naver.com
- Location : ( 3xx 에러 )
- Allow : 허용 가능한 HTTP 메서드 ( GET, HEAD, PUT )를 클라이언트에게 전달 ( 4xx 에러 )
- Retry-After : 유저가 다음 요청까지 기다려야 하는 시간 ( 5xx 에러 )
- 503 (Service Unavailable): 서비스가 언제까지 불능인지 알려줌
- Retry-After: Fri, 15 Dec 2022 11:11:11 GMT (날짜 표기)/ Retry-After: 360 (초단위 표기)
인증
- Authorization : 클라이언트 인증 정보를 서버에 전달
- WWW-Authenticate : 리소스 접근 시 필요한 인증 방법 정의
- 오류 시 401 Unauthorized 상태 코드와 함께 사용된다
- WWW-Authenticate : Newauth realm= "apps", type=1, title="Login to \"apps\"", Basic realm="simple"
쿠키
- Set-Cookie : 서버에서 클라이언트로 쿠기를 전달 (응답)
- Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청 시 서버로 전달
HTTP는 무상태(Stateless) 프로토콜이다. 따라서 요청과 응답을 주고받으면 연결이 끊어진다. 따라서 상태를 유지하지 않는다. 방안으로 모든 요청에 사용자 정보를 포함시키면 가능하다. 그러나 (모든 요청에 정보를 포함시킬 경우 보안 등등 문제 발생 )
이때, 쿠키를 사용하면 굉장히 편리해진다. 초기 로그인 시 set cookie 값을 응답해서 웹 브라우저의 쿠키 저장소에 저장이 된다. 그리고 추후에 동일한 서버에 접속하면, 모든 요청에 대해 쿠키 저장소를 검색해서 해당 값을 꺼내 헤더에 쿠키값을 넣어 요청하게 된다. 그러면 URL을 복잡하게 할 필요 없이 편하게 자동 로그인이 가능해진다.
- 쿠키 주 사용처
- 사용자 로그인 세션 관리
- 광고 정보 트래킹
- 네트워크 트래픽 추가 유발 (쿠키값이 추가되기 때문)
- 최소한의 정보만 사용하는 것 추천
- 서버에 전송하지 않고 데이터만 가지고 싶다면 ( localStorage, sessionStroage )를 사용
- 보안에 민감한 데이터는 절대로 저장하지 말 것
- 쿠기 만료일
- 세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료 시까지만 유지
- 영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지
- 도메인 설정
- 도메인을 명시하면 명시한 도메인 + 서브 도메인까지 접근할 수 있다.
- 도메인을 생략 시에 현재 기준 도메인만 접근 가능
- 쿠키 경로
- 이 경로를 포함한 하위 경로 페이지 접근 가능 ( path=/ 루트 지정 )
- 쿠키 보안
- Secure
- https 인 경우에만 전송
- HttpOnly
- XSS 공격 방지
- 자바스크립트 접근 불가
- HTTP 전송만 가능
- SameSite
- XSRF 공격 방지
- 요청 도메인과 쿠키에 설정된 도메인이 같은 경우에만 쿠키 전송
- Secure
반응형
'IT 정보 > Spring' 카테고리의 다른 글
[네트워크] HTTP 메서드 (44) | 2022.06.08 |
---|---|
[네트워크] HTTP 헤더 2 (30) | 2022.06.07 |
[네트워크] HTTP 상태 코드 (13) | 2022.06.07 |
[네트워크] SPA(Single Page Application) : AJAX (8) | 2022.06.05 |
[네트워크] HTTP Messages (10) | 2022.06.05 |