본문 바로가기
TIL/모든 개발자를 위한 HTTP 웹 기본 지식

7.HTTP 헤더1 - 일반 헤더

by Dev_Dank 2021. 6. 27.

인프런의 모든개발자를 위한 HTTP 웹 기본 지식 강의를 들은 내용을 정리하는 포스트입니다. 


HTTP 헤더 개요

HTTP 헤더의 용도

• HTTP 전송에 필요한 모든 부가정보
- 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐 시 관리 정보...
• 표준 헤더가 너무 많음
- https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
• 필요시 임의의 헤더 추가 가능
- helloworld: hihi


표현헤더의 종류


협상(콘텐츠 네고시에이션)헤더

클라이언트가 선호하는 표현을 요청하는데 사용되는 헤더이며 아래와 같이 4가지 종류가 존재한다. 

예를들어 협상헤더를 쓰지않으면 다중언어를 지원하는 서버가 있어도 기본 언어만 받게된다. 그러나 요청메시지에 협상헤더로 선호도를 표시해서 메시지를 보내면 해당언어로 받아볼수도있다. 

협상헤더는 또한 우선순위를 표현해서 어떤 내용이 더 우선적으로 클라이언트가 받고 싶은것인지 표현가능하다. 

가장 받고싶은 언어는 한국어지만 서버에서 지원하지 않는다. -> 그 다음으로 우선순위가 높은 영어를 대신 보내줌

협상헤더는 더 구체적으로 표현할수록 우선순위가 높다. 


전송방식 헤더

전송방식을 설명해주는 해더로 대표적으로 4가지가 존재한다. 

단순전송(Content-Length): 말 그대로 그대로 전송한다. 
압축전송(Content-Encoding): 서버에서 내용을 압축해서 전달할때 어떤 압축방식을 썻는지 표시한다. 
분할전송(Transfer-Encoding): 파일을 한번에 보내는게아니라 일정 바이트로 나누어서 각각 한번씩 보낼때 사용한다. 
범위전송(Range, Content-Range): 특정 데이터 범위를 전송할때 쓴다 (예를 들어 사진을 중간 까지만 다운받았는데 연결이 끊김 => 전체를 다시 다받으면 비효율적이니 끊긴 곳 부터 바이트단위로 다시 전송받자)


일반정보 헤더

• From: 유저 에이전트의 이메일 정보
• Referer: 이전 웹 페이지 주소
• User-Agent: 유저 에이전트 애플리케이션 정보
• Server: 요청을 처리하는 오리진 서버의 소프트웨어 정보
• Date: 메시지가 생성된 날짜


특별한정보 헤더

Host
• 요청에서 사용
• 필수로 입력해야하는 헤더임.
• 하나의 서버가 여러 도메인을 처리해야 할 때 유용함.
== 하나의 IP 주소에 여러 도메인이 적용되어 있을 때

가상호스트의 경우 하나의 아이피 주소로 여러 도메인이 연결되어있을 수 있다. 
따라서 요청메세지에 Host 정보가 없으면 어디서 해당 요청을 처리해야할지 알수가 없다. 
Host를 표시해야 정상적으로 요청을 처리할 수 있다. 

Location
페이지 리다이렉션에 사용되며 응답코드 3xx에 Location 헤더가 있으면 해당위치로 자동이동 한다. 

Allow
405응답 에서 포함하는 정보이며 허용가능한 메서드를 표시한다. 

Retry-After
유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간 (5xx 서버장애 메시지와 관련)


인증헤더

• Authorization: 클라이언트 인증 정보를 서버에 전달
• WWW-Authenticate: 리소스 접근시 필요한 인증 방법 정의


쿠키헤더

• Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답)
• Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달
• 예) set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; domain=.google.com; Secure

왜 쿠키를 쓰는 걸까?

=>HTTP는 무상태(Stateless)프로토콜이기 때문에 클라이언트와 서버가 요청-응답이 끝나면 연결이 끊어진다. 
=>또한 서버는 클라이언트에대한 정보를 기억하지 않는다. 
=>이러면 로그인한 유저같은경우 어떻게 기억하지????


=> 따라서 클라이언트가 로그인할때 서버가 클라이언트에게 쿠키를 넘겨주고 해당 클라이언트가 요청을 보낼때 마다 쿠키를 같이 보내게 해서 해당 사용자를 식별하는 것. 

쿠키의 특징
• 사용처
- 사용자 로그인 세션 관리
- 광고 정보 트래킹
• 쿠키 정보는 항상 서버에 전송됨
- 네트워크 트래픽 추가 유발
- 최소한의 정보만 사용(세션 id, 인증 토큰)
• 서버에 전송하지 않고, 웹 브라우저 내부에 데이터를 저장하고 싶으면 웹 스토리지 (localStorage, sessionStorage) 참고

주의! • 보안에 민감한 데이터는 저장하면 안됨(주민번호, 신용카드 번호 등등)

 

'TIL > 모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글

8.HTTP 헤더2 - 캐시와 조건부 요청  (0) 2021.06.27
6.HTTP 상태코드  (0) 2021.06.23
5. HTTP 메서드 활용  (0) 2021.06.23
4. HTTP 메서드  (0) 2021.06.22
3. HTTP 기본  (0) 2021.06.21

댓글