HTTP 메시지 헤더는 엔티티에 관한 다양한 종류의 메타 정보를 가진다.
헤더 필드 명과 필드 값으로 구성되며 콜론(:
)으로 구분된다. 여러 개의 필드 값을 가질 수 있다.
헤더 필드 명 : 필드 값
Keep-Alive:timeout=15,max=100
요처으 응답 모두에 사용할 수 있다.
요청에 사용하는 헤더. 요청의 부가 정보와 클라이언트 정보, 응답 컨텐츠의 우선 순위 등
응답에 사용하는 헤더. 응답 정보와 서버 정보, 클라이언트의 추가 정보 요구 등
엔티티에 사용하는 헤더. 컨텐츠 갱신 시간 등 엔티티에 관한 정보 부가
캐시와 비캐시 프록시의 동작을 정의하기 위해 분류한다.
요청이나 응답의 최종 수신자에게 전송된다. 프록시를 거치며 다시 전송되어 끝까지 도달해야 함.
한 홉 전송에만 유효. 아예 전송되지 않는 경우도 있다. HTTP/1.1에서는 아래 정의된 8가지만 해당하며 이외에는 전부 End-to-end 헤더이다.
디렉티브(Directive)로 불리는 명령을 사용하여 캐싱 동작 지정
디렉티브의 파라미터는 선택이며 여러 개의 디렉티브를 지정할 때는 콤마,
로 지정한다.
Cache-Control: private, max-age=0, no-cache
public
Cache-control: public
privare
Cache-control: private
no-cache
Cache-control: no-cache
클라이언트
: 중간 캐시 서버가 오리진 서버까지 요청 전송.서버
: 캐시 서버는 리소스를 저장할 수 없다.헤더 필드 명 지정
: 해당 헤더 필드만 캐시할 수 없음. no-store
Cache-control: no-cache
max-age
Cache-control: max-age=604800
(sec)must-revalidate
Cache-control: must-revalidate
Connection: 더 이상 전송하지 않는 헤더 필드 명
프록시에 더 이상 전송하지 않을 헤더 필드 지정(Hop-by-hop)
Connection: Close
HTTP/1.1에서는 지속 접속이 기본이다. 명시적으로 접속을 끊고 싶을 경우 사용한다.
메시지 바디의 전송 코딩 형식을 지정하지만 스펙상 청크 전송만이 지정되어있다.
Transfer-Encoding: chunked
클라이언트와 서버 간 HTTP 전송 경로를 알기 위해 사용한다. 프록시 혹은 게이트웨이는 자신의 서버 정보를 Via
헤더 필드에 추가한 뒤 메시지를 전송한다.
Via: someProxyInfo, anotherProxyInfo
요청한 쪽이 처리할 수 있는 미디어 타입과 상대적인 우선순위를 전달하기 위해 사용한다.
Accept-Charset:iso-885905, unicode-1-1:q+0.8
요청한 쪽이 처리할 수 있는 문자셋으로, 상대적인 우선순위를 전달하기 위해 사용. 서버 구동형 네고시에이션에 사용된다.
요청한 쪽이 처리할 수 있는 컨텐츠 코딩과 상대적인 우선순위를 전달하기 위해 사용.
Accept-Encoding: gzip, deflate
종류는 다음과 같다.
gzip
compress
deflate
identity
요청한 쪽이 처리할 수 있는 언어와 상대적인 우선순위를 전달하기 위해 사용.
Accept-Language: ko-kr, en-us;q=0.7, en;q=0.3
요청한 쪽의 인증 정보를 전달하기 위해 사용된다. 서버에서 401 Unauthorized 응답을 받은 경우 인증 정보를 포함하여 다시 전송한다.
Authorization: Bearer XXX...
가상 호스트 서비스를 위해 반드시 필요하다. 1대의 서버에서 복수의 도메인을 할당하게 하기 위해 인터넷 호스트와 포드 번호를 전달하여 특정한다.
Host: www.naver.com
요청 URI에 지정된 리소스가 제공하는 메소드의 목록을 제공한다.
Allow: GET, POST
서버가 엔티티 바디에 사용한 컨텐츠 코딩 형식 전달.
Content-Encoding: gzip
엔티티 바디에 사용된 언어 전달.
Content-Language: ko
엔티티 바디의 크기(bytes) 전달. 전송 코딩이 적용된 경우 사용하지 않음.
Content-Length: 15000
메시지 바디에 대응하는 URI 전달.
Content-Location: http://www.naver.com/peper
Range-request에 관해 엔티티가 어느 부분인가 전달.
Content-Range: bytes 5001-10000/10000
엔티티 바디에 담긴 객체의 미디어 타입을 전달.
Content-Type: test/html; charset=UTF-8
리소스가 마지막으로 갱신된 날짜 전달.
Last-Modified: Wed, 23 May 2022 05:06:10 GMT
브라우저가 쿠키를 보낼 수 있는 유효 기간 지정. 생략한 경우 브라우저 세션이 유지된 동안만 유효하다. 브라우저가 보낸 쿠키를 서버측에서 삭제하지는 않으며, 덮어 씌우는 것으로 간접적으로 삭제한다.
expires=Wed, 23 May 2022 05:06:10 GMT
HTTPS 보안 통신을 할 경우에만 쿠키를 전달하도록 하기 위해 지정.
Set-CookieL name=value; secure
JS 를 경유해서 쿠키를 취득하지 못하도록 하는 쿠키의 확장 기능. XSS(Cross Site Scripting)에서 쿠키 도청을 막기 위한 목적.
Set-Cookie: name=value; HttpOnly