HTTP 헤더
HTTP 헤더
- HTTP 전송에 필요한 모든 부가 정보를 포함한다. 예를들면 Content-Type, Content-Length 기반의 메시지 바디를 해석할 수 있다. (해석할 수 있는 정보 제공을 한다.) / 데이터 유형(html, json), 데이터 길이, 압축 등
- Content-Type : text/html ... > html 형식
- Content-Type : application/json > json 형식
- 메시지 본문 = 페이로드, 표현 헤더, 표현 데이터 (RFC7230~7235 등장 시점 변경 내용)
- 표현 데이터 정보를 헤더에서 확인해볼 수 있는데 위에 언급된 2가지와 (Content-Type/ Content-Length) + Content-Encoding/ Content-Language/ Content-Length 있다.
콘텐츠 네고시에이션
- 클라이언트가 원하는 표현으로 서버에 요청을 해서 원하는 표현 데이터를 받는것을 의미한다.
- Accept
- 클라이언트가 선호하는 미디어 타입 전달
- Accept-Charset
- Accept-Encoding
- AcceptLanguage
- Accept
- 만약, 서버에서 표현 데이터가 여러개면 Qulity Values(q)로 우선순위를 할당하게 된다. Accept-Language: ko-KR, ko;q=0.9, en-US; q=0.8; q=0.7
- 서버에서는 읽어보고 Qulity Values 매칭 한 후에 우선순위를 보고 클라이언트로 데이터를 보낸다.
- 아래는 구글에 검색 시 요청 콘텐츠 네고시에이션 사진이다.
* 서버가 XML, JSON 모두 제공하면 클라이언트별 선호하는 포맷을 제공하기 위해서 우선순위를 할당하는것을 잊지 말자.
전송 방식
- 단순 전송
- Content-Length를 알 수 있으면 한번에 요청해서 쭉 받을 수 있다.
- 압축 전송
- 서버에서 html 표현 데이터를 압축해서 전송하게 되면 용량이 크게 줄어든다. 압축하는데 Content-Encoding을 사용한다.
- 분할 전송
- 청크 덩어리를 쪼개서 보내게 된다. 오는대로 바로바로 전송할 수 있는 장점이 있다.
- 범위 전송
- 이미를 받는데 중간에 끊키면 처음부터 다시 해야 되는데 범위를 지정해서 전송할 수 있다.
- Content-Range : bytes 1001~2000 / 2000
HTTP 헤더
- From : 유저 에이전트 이메일 정보
- Referer : 이전 웹 페이지 정보
- user-agent : 클라이언트 애플리케이션(=유저 에이전트) 브라우저 정보, 이 user-agent를 보고 특정 브라우저에서 에러가 발생한것을 파싱해서 확인할 수 있다. 통계 정보를 확인하는데 사용된다.
- server : http 요청 보내면 실제 origin server를 찾아가기 까지 중간에 여러 프록시 서버를 거친다. 응답에서 사용
- host : 요청에서 사용하는데 필수 값이다. 하나의 서버가 여러 도메인을 처리할 때 사용한다. 하나의 IP 대역에서 여러 서버 있을 때 서버를 찾아가기 위한 용도
- Location
- 201(Created) : Location 값은 요청에 의해 생성된 리소스 URI
- 3xx(Redirection) : Location 값은 자동으로 리다이렉션하기 위해 대상 리소스 가리킴(Location 위치)
- Allow (허용 가능한 HTTP 메서드)
- 405(Method Not Allowed), 서버가 허용하지 않는 HTTP 메서드를 호출했을 때 사용
- Retry-After (유저 에이전트가 다음 요청 하기까지 기다려야 하는 시간)
- 503(Service Unavailable), 서비스가 언제까지 불능인지 알려준다.
- 401 (Unauthorized) - HTTP 헤더에 WWW-Authenticate : Newauth realm="apps" ... 추가해서 보내야 한다.
쿠키
- 서버에서 쿠키 셋 해서 보내 줄 때는 Set-Cookie 를 사용한다.
- 쿠키 저장소에서 쿠키를 꺼내서 HTTP 헤더에 포함시켜 보내준다.
- 어디에 쓸까?
- 사용자 세션 관리
- 쿠키는 최소한의 정보만 사용해야 한다. (네트워크 트래픽 유발)
- 웹 스토리지(local storage, session storage)를 써서 웹 브라우저 내부에 데이터를 저장해서 JS가 꺼내서 쓸 수도 있다.
- 단, 보안에 민감한 데이터는 저장해서는 안된다.
- expires(기간), max-age(초)
- domain = github.com 명시를 하면 명시한 문서 기준 도메인 + 서브 도메인을 포함한다. 반대로 생략하면 현재 문서 기준 도메인만 적용된다.
- path=/ 지정하면 경로를 포함한 하위 경로 페이지 쿠키 접근이 가능하다.
- /home (가능), /home/level1(가능), /home/level1/level2(가능)
- 쿠키는 http, https 구분하지 않고 전송가능
- JS가 쿠키에 접근할 수 있는데 XSS 를 쿠키에 보안을 설정하면 (HttpOnly) JS에 접근이 불가해진다. (단, Http에서만 사용)
- 영속 쿠키
- 만료 날짜까지 유지
- 세션 쿠키
- 만료 날짜를 생략하면 브라우저 종료까지 유지
출처
https://dribbble.com/shots/15126018-Cloud-icon-for-digital-ecosystem-logo-design-symbol
'Computer Science > Network' 카테고리의 다른 글
HTTP 캐시와 조건부 요청 (0) | 2021.12.09 |
---|---|
HTTP 상태 코드 (0) | 2021.12.09 |
HTTP 메서드 활용 (0) | 2021.12.09 |
HTTP 메서드 (0) | 2021.12.07 |
HTTP 기본 (0) | 2021.12.07 |
댓글
이 글 공유하기
다른 글
-
HTTP 캐시와 조건부 요청
HTTP 캐시와 조건부 요청
2021.12.09 -
HTTP 상태 코드
HTTP 상태 코드
2021.12.09 -
HTTP 메서드 활용
HTTP 메서드 활용
2021.12.09 -
HTTP 메서드
HTTP 메서드
2021.12.07