HTTP 헤더는 HTTP 전송에 필요한 모든 부가정보를 전송한다 예를 들어 메시지 바디 내용, 메시지 바디 크기, 서버 정보 , 등등 ..
표현은 요청이나 응답에서 전달할 실제 데이터고 이런 표현 데이터는 메시지 본문을 통해 전달한다. 이 표현 데이터를 해석할 수 있는 정보를 제공하는 헤더를 **표현헤더**
라고 한다
표현 데이터를 해석할 수 있는 정보? → 데이터 유형, 데이터 길이, 압축 정보 같은 정보를 제공한다고 생각하면 된다
표현 헤더 종류는 아래와 같다
✅content type
컨텐츠 바디에 들어가는 내용이 무엇인지를 나타내는 형식이다
예를 들어 html 내용이 들어가면 content type은 html이다
✅content encoding
표현 데이터 압축 방식을 의미한다 만약 클라이언트에게 표현 데이터를 압축해서 보내면 클라이언트는 이게 무엇으로 압축되었는지 알아야 하므로 content encoding의 값을 보고 알 수 있다
✅content language
표현 데이터의 언어를 의미한다
✅content length
표현 데이터의 길이인데 바이트 단위로 나타낸다
협상 헤더는 클라이언트가 원하는 표현으로 전송해달라고 서버에게 요청하는 헤더이다 그러면 협상헤더를 보고 서버는 가능한 클라이언트가 원하는 표현으로 전송한다
협상헤더는 요청시에만 사용한다
✅Accept
클라이언트가 선호하는 미디어 타입 전달
✅Accept-Charset
클라이언트가 선호하는 문자 인코딩
✅Accept-Encoding
클라이언트가 선호하는 압축 인코딩
✅Accept-Language
클라이언트가 선호하는 자연 언어
ex) 한국 브라우저에서 외국에 있는 사이트에 접속했다고 가정해보자 이 사이트는 다중 언어를 지원하는 서버이기에 요청이 왔을 때는 기본 값인 영어를 보낸다
그런데 만약 accept language를 사용해서 ko 언어로 보내달라고 하면 서버는 content language ko로 보낸다
— quality values(q)
—
하지만 만약 기본 값이 불어인 사이트에서 한국어 언어로 데이터를 요청했다고 가정해보자 이때 한국어가 존재하지 않는다면 기본 값인 불어를 content language로 설정하여 데이터를 보낼 것이다. 하지만 우리는 기본 값인 불어보다는 차라리 영어 데이터가 더 낫다고 전달해야한다. 이런 상황을 위해 사용하는 것이 우선순위로 accept language에 단순히 ko가 아닌 우선순위를 사용하여 요청을 보낸다
Accept도 마찬가지로 우선순위를 정해줄 수 있다
✅referer
현재 요청된 페이지의 이전 웹 페이지 주소
ex) 구글에 gpt를 검색해서 gpt 사이트를 들어갔다면 이때 요청의 referer은 구글 검색 페이지가 될 것 이다
이는 referer을 통해 유입 경로를 분석할 수 있다
✅user agent
요청을 보낼 때 내 웹 브라우저 정보를 user agent 헤더를 통해 보낸다
이 헤더는 어떤 종류의 브라우저에서 장애가 발생하는 지 파악이 가능하다
✅server
요청을 처리하는 origin 서버의 소프트웨어 정보를 나타낸다
우리가 요청을 보내면 중간에 여러 proxy 서버를 거치게 된다 이때 진짜 서버를 origin이라고 한다
✅date
메시지가 발생한 날짜와 시간
✅Host
요청한 호스트 정보로 요청에서 사용한다 필수헤더이다
하나의 IP 주소에 여러 도메인이 적용되어 있을 때 사용한다
예를 들어 하나의 서버(같은 ip주소)에 aaa.com , bbb.com , ccc.com 세개 도메인을 사용하고 있다고 가정해보자 이때 만약 / 로 요청을 보낼때 어떤 도메인에 보내야할지 모르는 상황이 생긴다 그럴 때 Host 헤더를 써서 구분한다
✅ Location
응답 코드가 3XX이고 Location 헤더가 존재하면 Location 위치로 이동한다
응답 코드가 2XX 일땐 요청에 의해 생성된 리소스 URI를 나타낸다
✅Allow
허용 가능한 http 메서드를 나타내는 헤더이다
예를 들어 해당 url 경로에서 get head put 메서드만 지원을 한ㄷ고 가정 post 메서들르 사용하면 405 에러를 보내고 allow 안에 허용 가능한 http 메서드를 보낸다
✅Retry after
503 응답 코드를 보낼 때 사용하는 헤더이다
언제까지 서비스 이용 불가인지를 나타낸다
→ 쿠키에 관한 내용은 해당 글에 포함하면 길어질 것 같아 다른 아티클로 분리했다
https://youthful-jump-c97.notion.site/600984e004c74c11ab98ce30ed79b0bb