Search

HTTP 헤더

6.1 HTTP 메시지 헤더

응답과 요청 둘 다 에 존재하며, 다양한 정보를 가지고 있다.

6.2 HTTP 헤더 필드

6.2.1 HTTP 헤더 필드는 중요한 정보를 전달한다

6.2.2 HTTP 헤더 필드 구조

필드 명과 필드 값으로 구성되어 있고 : 으로 나뉘어져 있습니다.
헤더 필드 : 헤더 값

6.2.3 4종류의 HTTP 헤더 필드

일반적 헤더 필드 : 요처오가 응답 두곳에서 모두 사용
요청 헤더 필드 : 요처으이 부가적 정보, 클라이언트 정보, 리스폰스의 우선순위 등
응답 헤더 필드 : 응답 정보, 서버 정보, 클라이언트 추가 정보
엔티티 헤더 필드 : 콘텐츠 갱신 시간 등 엔티티 정보

6.2.4 HTTP/1.1 헤더 필드 일람

HTTP/1.1에는 47가지가 정의되어 있음

6.2.5 HTTP/1.1 이외의 헤더 필드

쿠키, Content-disposition등 RFC에 정의 되어 널리 사용되는 것들이 존재

6.2.6 End-to-end 헤더와 Hop-by-hop 헤더

End-to-end 헤더 : 요청과 응답의 최종 수신자에게 수신
Hop-by-hop 헤더 : 한번 전송에 유효하고, 그 이후 캐시와 프록시에 의해서 전송되지 않는 것이 존재
아래 8개를 제외하면 모두 End-by-end로 간주
Connection
Keep-Alive
Proxy-Authenticate
Proxy-Authorization
Trailer
TE
Transfer-Encoding
Upgrade

6.3 HTTP/1.1 일반 헤더 필드

양쪽에서 모두 사용되는 코드

6.3.1 Cache-Control

캐싱 동작 지정
리퀘스트
no-cache : 캐시 강제 재 검증
no-store : 저장 안함
리스폰스
public : 어딘가에 응답 캐시 가능
private : 특정 유저에만 응답
no-cache
no-store
must-revaildate : 캐시 가능하지만 오리진에 재확인 요구
max-age : Expires 헤더 필드가 달린 경우, max-age가 우선되고 Expires무시

6.3.2 Connection

프록시에 더 이상 전송하지 않는 헤더 필드 지정 : Connection : 헤더 필드
지속적 접속 관리 : 지속적 접속이 디폴트지만 서버에서 명시적으로 끊고 싶은 경우 close

6.3.3 Date

HTTP 메시지 생성 날짜

6.3.4 Pragma

HTTP/1.0 호환을 위해 존재하며 1가지만 지정 가능
Pragma : no-cache
클라이언트의 요청에서만 사용되며, 캐시된 리소스를 원하지 않는 다고 알리기 위해 사용

6.3.5 Trailer

바디 뒤에 있는 헤더 필드 미리 전달

6.3.6 Transfer-Encoding

머시지 바디 코딩 형식 지정

6.3.7 Upgrade

HTTP 및 다른 프로토콜의 새로운 버전이 이용되는 경우
Connection : Upgrade

6.3.8 Via

프록시 거칠 때 해당 헤더이 추가

6.3.9 Warning

응답 추가 정보 및 경고

6.4 리퀘스트 헤더 필드

6.4.1 Accept

처리 가능한 미디어 타입과 우선순위 전달

6.4.2 Accept-Charset

문자셋의 우선 순위 전달

6.4.3 Accept-encoding

유저가 처리할 수 있는 콘텐츠 코딩과 우선순위 지정
gzip
compress
deflate
identity : 디폴트 값

6.4.4 Accept-Language

처리 가능한 자연어 세트 전달

6.4.5 Authorization

인증 정보 전달

6.4.6 Expect

특정 동작 요구 전달

6.4.7 From

유저의 메일 주소 전달

6.4.8 Host

리소스의 인터넷 호스트와 포트 번호 전달
가상 호스트는 동일 IP이기 때문에 Host 헤더 필드로 구분됩니다.

6.4.9 If-Match

조건부 리퀘스트로 서버는 조건에 맞는 경우에만 리퀘스트를 받음

6.4.10 If-Modified-Since

필드 값에 짖어된 날짜 이후에 갱신된 리소스라면 리퀘스트를 받아들인다

6.4.11 If-None-Match

필드 값과 ETag가 일치하지 않은 경우에만 리퀘스트 받아들임

6.4.12 If-Range

조건부 리퀘스트로 if-range로 지정한 필드값과 지정한 리소스의 값이 일치하면 처리하고 싶다는 것을 전달

6.4.13 If-Unmodified-Since

modified와 반대로 동작

6.4.14 Max-Forwards

프록시 경우 횟수

6.4.15 Proxy-Authorization

프록시 서버 인증에 정보 전달

6.4.16 Range

리소스 일부분 취득시 범위 지정

6.4.17 Referer

리퀘스트 발생 출처 표시 → 오타지만 그냥 씀

6.4.18 TE

전송의 코딩 형식과 상대적 우선 순위 전달

6.4.13 User-agent

리퀘스트 생성 브라우저의 이름, 기기 정보

6.5 리스폰스 헤더 필드

6.5.1 Accept-Ranges

레인지 접수 가능 여부

6.5.2 Age

얼마 전에 생성되었는지

6.5.3 ETag

엔티티태그로 리소스를 특정하기 위한 문자열
강: 반드시 값이 변함
약: 차이가 있는 경우에만 변화

6.5.4 Location

리다이렉트 url

6.5.5 Proxy-Authenticate

프록시에서 인증요구를 클라에 전달

6.5.6 Retry-After

일정시간 후에 리트라이 지정

6.5.7 Server

서버가 설치되어 있는 소프트웨어 전달 버전등도 전달

6.5.8 Vary

캐시를 컨트롤 하기 위해서 사용

6.5.9 WWW-Authenticate

6.6 엔티티 헤더 필드

6.6.1 Allow

Request-URI에 지정된 리소스가 제공하는 메소드 전달

6.6.2 Content-Endcoding

인코딩 형식 전달

6.6.3 Content-Language

엔티티 바디에 사용된 언어 전달

6.6.4 Content-Length

엔티티 바디의 크기 전달

6.6.5 Content-Location

메시지 바디에 대응하는 URI 전달

6.6.6 Content-MD5

메시지 바디 변경 여부 확인 값

6.6.7 Content-Range

컨텐츠 사이즈

6.6.8 Content-type

타입/서브 타입 을 기록

6.6.9 Expires

만료일 이지만 Cache-Control 헤더에 max-age지정시 우선순위가 밀림

6.6.10 Last-Modified

마지막 갱신일 전달

6.7 쿠키를 위한 헤더 필드

다양한 사양 존재

6.7.1 Set-Cookie

Expires : 유효기간
Path : 쿠키 송출 범위 디렉 토리 한정 but 보안
Domain : 후방 일치(www.exame.com 중 exame.com)이기에 지정하지 않는 것이 안전
Secure : https에서만 송출하기 위해 지정
HttpOnly : js를 경유해서 취득 못하도록 확장 기능으로 xxs 막는 목적

6.8 그 이외의 헤더 필드

6.8.1 X-frame-Option

다른 웹 사이트의 프레임에서 표시를 제어 - deny, sameorigin이 존재

6.8.2 X-XSS-Protection

XSS 대책 헤더

6.8.3 DNT

개인 정보 수집 거부

6.8.4 P3P

웹사이트 상의 프라이버시 정책