-
[HTTP 기본] HTTP 헤더기타 2022. 2. 24. 20:24반응형
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다.
틀리거나 잘못된 정보가 있을 수 있습니다.
댓글로 알려주시면 수정하도록 하겠습니다.
1. 메시지 헤더
메시지 헤더는 리퀘스트와 리스폰스 메시지에 반드시 포함되어 있으며 리퀘스트 헤더와 리스폰스 헤더로 나뉩니다.
리퀘스트 헤더와 리스폰스 헤더의 데이터는 클라이언트 또는 서버에서 처리를 위한 정보들이 포함되어 있습니다.
이러한 부가 정보에는 메시지 바디의 크기, 언어, 인증 정보 등 다양한 정보들이 있을 수 있습니다.
2. 헤더 필드 구조
헤더 필드는 필드명과 필드 값으로 구성되어 있습니다. 필드명과 필드 값은 콜론(:)을 통해 구분 합니다.
위 그림처럼 빨간색 줄의 헤더 필드명과 초록색 줄의 헤더 값으로 구성되어 있습니다.
헤더 필드가 중복으로 있는 경우
필드명이 같은 헤더가 여러개 존재할 수 있습니다.
중복된 필드에 대한 사양이 정해져 있지 않으므로 이런 경우는 브라우저 마다 다르게 동작을 합니다.
최초의 헤더를 우선 수행한다던지 또는 반대로 마지막 헤더를 우선 수행을 진행 합니다.3. 헤더 필드 종류
헤더 필드는 용도에 따라 4가지로 분류 됩니다.
- 일반 헤더
일반 헤더는 리퀘스트, 리스폰스 모두 사용되는 헤더입니다. - 리퀘스트 헤더
클라이언트가 서버로 전송하는 리퀘스트 메시지에 사용되는 헤더입니다.
리퀘스트의 부가적 정보나 클라이언트의 정보 등이 포함 됩니다. - 리스폰스 헤더
서버가 클라이언트로 전송하는 리스폰스 메시지에 사용되는 헤더입니다.
리스폰스의 부가적 정보나 서버의 정보 또는 클라이언트로 부터 추가적인 정보 요청 등이 포함됩니다. - 엔티티 헤더
리퀘스트, 리스폰스 메시지에 포함된 엔티티에 사용되는 헤더입니다.
콘텐츠 갱신 시간과 같은 엔티티에 대한 부가적 정보 등이 포함됩니다.
4. 자주 사용되는 헤더
일반 헤더
필드명 설명 Cache-Control 캐시 동작을 지정 Connection Hop-by-hop헤더, 커넥션 관리 Date 리퀘스트, 리스폰스 메시지 생성 날짜 및 시간 Pragma 메시지 제어 Trailer 메시지의 끝에 있는 헤더의 일람 Transfer-Encoding 메시지 바디의 전송 코딩 형식 지정 Upgrade 다른 프로토콜에 업그레이드 Via 프록시 서버 정보 Warning 에러 통지 리퀘스트 헤더
필드명 설명 Accept 사용자의 에이전트가 처리 가능한 미디어 타입 Accept-Charset 문자셋 우선 순위 Accept-Encoding 인코딩 우선 순위 Accept-Language 자연어 우선 순위 Authorization 웹 인증읠 위한 정보 Expect 서버에 대한 특정 동작의 기대 From 유저의 메일 주소 Host 요청 리소스의 호스트 If-Match 엔티티 대그의 비교 If-Modified-Since 리소스 갱신 시간 비교 If-None-Match 엔티티 태그의 비교 If-Match와 반대 If-Range 리소스가 갱신되지 않은 경우 엔티티의 바이트 범위 요구 If-Unmodified-Since 리소스의 갱신 시간 비교 If-Modified-Since와 반대 Max-Forwards 최대 전송 홉 수 지정 Proxy-Authorization 프록시 서버의 클라이언트 인증을 위한 정보 Range 엔티티 바이트 범위 요구 Referer 리퀘스트중의 URI를 취득하는 곳 TE 전송 인코딩의 우선 순위 User-Agent HTTP 클라이언트 정보 리스폰스 헤더
필드명 설명 Accept-Ranges 바이트 단위의 요구를 수신할 수 있는지 없는지 여부 Age 리소스의 지정 경과 시간 Etag 리소스를 특정하기 위한 Etag 정보 Location 클라이언트를 지정한 URI에 리다이렉트 Proxy-Authenticate 프록시 서버의 클라이언트 인증을 위한 정보 Retry-After 리퀘스트 재시행의 시간 요구 Server HTTP 서버 정보 Vary 프록시 서버에 대한 캐시 관리 정보 WWW-Authenticate 서버의 클라이언트 인증을 위한 정보 엔티티 헤더
필드명 설명 Allow 리소스가 제공하는 HTTP 메소드 Content-Encoding 엔티티 바디에 적용되는 콘텐츠 인코딩 Content-Language 엔티티의 자연어 Content-Length 엔티티 바디의 사이즈 Content-Location 리소스에 대응하는 대체 URI Content-MD5 엔티티 바디의 메시지 다이제스트 Content-Range 엔티티 바디의 범위 위치 Content-Type 엔티티 바디의 미디어 타입 Expires 엔티티 바디의 유효기한 Last-Modified 리소스의 최종 갱신 날짜 HTTP 헤더에는 대표되는 47개의 필드가 있으며 이 외에도 여러 헤더들이 폭 넓게 사용되고 있습니다.
5. HTTP 헤더 카테고리
HTTP 헤더 필드는 캐시와 비캐시 프록시의 동작을 정의하기 위한 두 가지 카테고리로 분류 됩니다.
- End-to-end
이 카테고리에 포함된 헤더는 최종 수신자에게 전송 되어야 하는 헤더 입니다.
캐시에서 구축된 리스폰스 중 보존되야 하고, 다시 전송되지 않으면 안되도록 되어 있습니다. - Hop-by-hop
이 카테고리에 포함된 헤더는 한 번 전송에 대해서만 유효하고 캐시와 프록시에 의해서 전송되지 않는 것도 있습니다.
즉 전송된 헤더가 각 서버들을 거치며 전송되는 과정에서 전송되지 않을 수 있는 것 입니다.
사용되는 Hop-by-hop 헤더는 Connection 헤더 필드에 작성하여야 합니다.
또한 아래 헤더 필드 외에는 모두 End-to-end 헤더로 분류 됩니다.
Connection
Keep-Alive
Proxy-Authenticate
Proxy-Authorization
Trailer
TE
Transfer-Encoding
Upgrade
반응형'기타' 카테고리의 다른 글
[AWS] EC2 CodeDeploy Agent 설치와 Ruby Error (0) 2022.03.12 [AWS] EC2 Gradlew 실행 권한 없음 (0) 2022.03.11 [HTTP 기본] HTTP 상태 코드 (0) 2022.02.22 [HTTP 기본] HTTP 메시지 (0) 2022.02.22 [HTTP 기본] HTTP 메소드 (0) 2022.02.17 - 일반 헤더