Web

HTTP 헤더(Header)

Bonita SY 2020. 10. 28. 22:48
728x90
반응형

HTTP 헤더

- 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 해주는 역할

- 대소문자를 구분하지 않는 키:줄바꿈이 없는 값 으로 이루어짐 (공백은 무시)

- IANA 레지스트리에 신규 헤더 포함 모든 헤더가 나열되어 있음 (원본은 RFC 4229)

 

※ 커스텀 헤더는 'X-'를 앞에 붙여 추가 될 수 있었지만, RFC 6648에서 비표준 필드가 표준이 되었을 때 불편함을 유발해 2012년 6월 폐기

 

Context에 따른 Header 그룹화

General header

- 요청과 응답 모두 적용

- body에 전송되는 데이터와 관련이 없는 헤더

 

Request header

- patch될 리소스나 client에 대한 자세한 정보를 포함하는 헤더

 

Response header

- 위치, 서버 자체에 대한 정보(이름, version 등)와 같이 응답에 대한 부가적인 정보를 갖는 헤더

 

Entity header

- Contents lengths나 MIME type과 같이 엔티티 body에 대한 자세한 정보를 포함하는 헤더

 

프록시 처리 방법에 따른 Header 그룹화

종단간 헤더 (End-to-end headers)

- message의 마지막 response에게 전송되어야 하는 헤더 => 요청 : 서버 / 응답 : 클라이언트

- 중간 프록시는 반드시 종단 간 헤더를 수정되지 않은 상태로 재전송해야 하고, 캐시는 이것을 반드시 저장해야함

 

홉간 헤더 (Hop-by-hop headers)

- 단일 전송-레벨 연결에서만 의미있음

- 프록시에 의해 재전송되거나 캐싱되어서는 안됨

- Connection 헤더를 사용해 설정될 수 있음

- 종류 : Connection, Keep-Alive, Proxy-Authenticate, Proxy-Authoriztion, TE, Trailer, Transfer-Encoding, Upgrade

 

"OO" 관련 헤더

인증

WWW-Authenticate

리소스에 대한 접근을 하는데 사용되어야하는 인증 메소드를 정의

 

Authorization

서버와함께 유저 에이전트를 인증하기 위한 자격 증명을 포함

 

Proxy-Authenticate

프록시 서버 뒤에 있는 리소스에 접근하는데 사용되어야하는 인증 메소드를 정의

 

Proxy-Authorization

프록시 서버와 함께 유저 에이전트를 인증하기 위한 자격 증명을 포함

 

캐싱

Age

객체가 프록시 캐시에 있었던 초 단위의 시간

 

Cache-Control

요청과 응답 모두에서의 캐싱 메커니즘을 명시하는 지시문

 

Clear-Site-Data

요청하는 웹사이트에 관련된 탐색 데이터(ex. 쿠키, 저장소, 캐시)를 제거

 

Expires

응답이 만료되었다고 고려되는 날짜/시간

 

Pragma

요청-응답 체인을 따라 어디든 다양한 영향을 줄 수 있는 구현-관련 헤더

Cache-Control 헤더가 존재하지 않는 HTTP/1.0 캐시와의 하위 호환성을 위해 사용

 

Warning

가능한 문제들에 대한 정보를 포함하는 일반 경고 필드

 

클라이언트 힌트

Accept-CH 

서버는 Accept-CH 헤더 필드나 http-equiv 어트리뷰트([HTML5])를 갖는 동등한 HTML meta 엘리먼트를 사용해 클라이언트 힌트에 대한 지원을 알림 가능

 

Accept-CH-Lifetime 

서버는 명시된 시간동안 서버가 지원하는 클라이언트 힌트의 집합을 클라이언트가 기억하도록 요청하여 서버의 오리진으로의 후속 요청에 대한 클라이언트 힌트를 전송 가능([RFC6454])

 

Early-Data 

요청이 초기 데이터로 전달되었음을 나타냄

 

Content-DPR 

Content-DPR 응답 헤더 필드는 선택한 이미지 응답의 CSS px를 통한 물리적 픽셀간의 비율을 나타내는 숫자

 

DPR 

DPR 요청 헤더 필드는 레이아웃 뷰포트(Section 9.1.1 of [CSS2])의 CSS px(Section 5.2 of [CSSVAL])를 통한 물리적 픽셀 비율인 클라이언트의 현재 기기 픽셀 비율(DPR)을 나타내는 숫자

 

Save-Data 

SaveData [CLIENT-HINTS] 요청 헤더 필드는 절약한 데이터 사용에 대한 유저 에이전트의 설정을 나타내는 하나 이상의 토큰으로 이루어져 있음

 

Viewport-Width 

CSS px 단위의 레이아웃 뷰포트 width를 나타내는 숫자

제공된 CSS px값은 정수로 반올림된 숫자

하나 이상의 메시지에서 Viewport-Width가 나타난다면, 마지막 값이 모든 이전의 값을 덮어씀

 

Width 

Width 요청 헤더 필드는 물리적 px(예, 이미지의 실제 크기) 단위의 원하는 리소스 width를 나타내는 숫자입니다. 제공된 물리적 px 값은 정수로 반올림된 숫자 (ex. 올림 값)

원하는 리소스 width를 요청 시점에 알 수 없거나 리소스가 표출 width를 갖지 않을 경우, Width 헤더 필드는 생략 가능

하나 이상의 메시지에서 Width가 나타난다면, 마지막 값이 모든 이전의 값을 덮어씀

 

조건부

Last-Modified

동일한 리소스의 여러 버전을 비교하는데 사용되는 검사기로, 리소스의 마지막 수정 날짜

ETag보다 덜 정확하지만, 어떤 환경에서는 계산이 더 쉬움

If-Modified-Since와 If-Unmodified-Since를 사용하는 조건부 요청은 이 값을 사용하여 요청의 동작을 변경

 

ETag

리소스의 버전을 식별하는 고유한 문자열 검사기

If-Match와 If-None-Match를 사용하는 조건부 요청은 이 값을 사용하여 요청의 동작을 변경

 

If-Match

저장된 리소스가 주어진 ETags의 하나와 일치하는 경우에만 요청을 조건부로 만들고 메소드를 적용

 

If-None-Match

저장된 리소스가 주어진 ETags 모두와 일치하지 않는 경우에만 요청을 조건부로 만들고 메소드를 적용

캐시(안전 연결용)를 업데이트하거나 이미 존재하는 리소스를 다시 업로드하는 것을 방지하기위해 사용

 

If-Modified-Since

주어진 날짜 이후에 수정된 경우에만 요청을 조건부로 만들고 엔티티가 전송될 것을 기대

캐시가 만료되었을 때에만 데이터를 전송하는데 사용

 

If-Unmodified-Since

주어진 날짜 이후에 수정되지 않은 경우에만 요청을 조건부로 만들고 엔티티가 전송될 것을 기대

특정 범위의 새로운 프래그먼트와 이전의 것과의 일관성을 보장하거나, 존재하는 다큐먼트를 수정할 때에 낙관적인 제어 시스템을 구현하는데 사용

 

Vary

origin서버로부터 새로운 요청을하는 대신 캐시된 응답을 사용할지를 결정하기 위한 향후의 요청 헤더를 매칭할 방법을 정하는 헤더

 

연결 관리

Connection

현재 트랜잭션이 끝난후에 네트워크 연결을 열린 상태로 둘지 여부를 제어

 

Keep-Alive

지속적인 연결이 열린 상태로 유지할 기간을 제어

 

컨텐츠 협상

Accept

돌려줄 데이터 타입에 대해 서버에 알림

MIME 타입

 

Accept-Charset

클라이언트가 이해할 수 있는 문자 집합에 대해 서버에 알림

 

Accept-Encoding

인코딩 알고리즘에 대해 서버에 알림

보통은 돌려줄 리소스에 사용되는 압축 알고리즘

 

Accept-Language

서버가 돌려주기로 예상된 언어에 대해 서버에 알림

이는 힌트이며 사용자의 모든 제어 아래에서는 필수가 아님: 서버는 명시적인 사용자 선택을 덮어쓰지 않도록 항상 조심해야 함(드롭 다운 리스트에서 언어를 선택하는 것처럼)

 

제어

Expect

요청을 적절히 처리하기위해 서버에서 수행되어야하는 기대치를 나타냄

 

Max-Forwards

 

쿠키

CookieSet-Cookie 

헤더와 함께 서버로부터 이전에 전송됐던 저장된 HTTP 쿠키를 포함

 

Set-Cookie

서버에서 유저 에이전트로 쿠키를 전송

 

Cookie2 

Set-Cookie2와 함께 서버에 의해 이전에 전송된 HTTP 쿠키를 포함하는데 사용되었지만, 명세에 의해 사용되지 않게 됨

대신 Cookie를 사용

 

Set-Cookie2 

서버에서 유저 에이전트로 쿠키를 전송하는데 사용되었지만, 명세에 의해 사용되지 않게 됨

대신 Set-Cookie를 사용

 

CORS

Access-Control-Allow-Origin

응답이 공유될 수 있는지를 나타냄

 

Access-Control-Allow-Credentials

credentials 플래그가 true일 때 요청에 대한 응답이 노출될 수 있는지를 나타냄

 

Access-Control-Allow-Headers

실제 요청을 만들 때 사용될 수 있는 HTTP 헤더를 나타내는 preflight 요청에 대한 응답으로 사용

 

Access-Control-Allow-Methods

preflight 요청에 대한 응답으로 리소스에 접근할 때 허용되는 메소드를 명시

 

Access-Control-Expose-Headers

헤더의 이름을 나열하여 어떤 헤더가 응답의 일부로 노출될 수 있는지를 나타냄

 

Access-Control-Max-Age

preflight 요청의 결과가 캐시되는 기간을 나타냄

 

Access-Control-Request-Headers

실제 요청이 있을 때 사용될 HTTP 헤더를 서버에 알리기 위한 preflight 요청을 보낼 때 사용

 

Access-Control-Request-Method

실제 요청이 있을 때 사용될 HTTP 메소드를 서버에 알리기 위한 preflight 요청을 보낼 때 사용

 

Origin

페치가 시작된 위치를 나타냄

 

Timing-Allow-Origin

Resource Timing API의 기능을 통해 반환되는 속성을 확인할 수 있게해주는 오리진을 명시

교차-오리진 제한으로인해 0으로 기록될 수도 있음

 

X-Permitted-Cross-Domain-Policies

교차-도메인 정책 파일(XML)이 허용되었는지를 명시

해당 파일은 Adobe Flash Player 또는 Adobe Acrobat(예, PDF)과 같은 웹 클라이언트가 도메인을 넘어 데이터를 다룰 수 있도록 허용하는 정책을 정의 가능

 

추적 안함

DNT

사용자의 추적 설정을 나타내는데 사용

 

Tk

해당하는 요청에 적용되는 추적 상태를 나타냄

 

다운로드

Content-Disposition

전송된 리소스가 한 줄로 표시되어야하거나(헤더가 존재하지 않을 때는 기본 동작), 다운로드처럼 처리되어야 하고 브라우저가 '다른 이름으로 저장' 창을 표시해야할 때에 대한 응답 헤더

 

메시지 바디 정보

Content-Length

수신자에게 전송된 엔티티 바디의 크기를 10진수 바이트 단위로 나타냄

 

Content-Type

리소스의 미디어 타입을 나타냄

 

Content-Encoding

압축 알고리즘을 명시하는데 사용

 

Content-Language

사용자를 위한 언어를 설명하여 사용자가 선호하는 언어에 따라 구분할 수 있게 도와줌

 

Content-Location

반환된 데이터를 위한 대체 위치를 나타냄

 

프록시

Forwarded

프록시가 요청의 경로에 포함될 때 변경되거나 손실되는 프록시 서버의 클라이언트 측면에 대한 정보를 포함

 

X-Forwarded-For 

HTTP 프록시나 로드 밸런서를 통해 웹 서버로 연결하는 클라이언트의 시작 IP 주소를 확인

 

X-Forwarded-Host 

클라이언트가 여러분의 프록시나 로드 밸런서에 접속하기 위해 사용하도록 요청됐던 원본 호스트를 확인

 

X-Forwarded-Proto 

클라이언트가 여러분의 프록시나 로드 밸런서에 접속하기 위해 사용했던 프로토콜(HTTP 또는 HTTPS)을 확인

 

Via

정방향 및 역방향 프록시에 모두에 의해 추가되며, 요청 헤더와 응답 헤더에서 나타날 수 있음

 

리다이렉트

Location

페이지를 리다이렉트할 URL을 나타냄

 

요청 컨텍스트

From

요청하는 유저 에이전트를 제어하는 사용자(사람)의 인터넷 이메일 주소를 포함

 

Host

서버(가상 호스팅용)의 도메인명과 (선택적으로) 서버가 리스닝중인 TCP 포트 번호를 명시

 

Referer

현재 페이지로 연결되는 링크가 있던 이전 웹 페이지의 주소

 

Referrer-Policy

생성된 요청이 Referer 헤더에서 전송된 referrer 정보에 포함되어야하는지를 관리

 

User-Agent

네트워크 프로토콜 피어가 요청하는 사용자 에이전트의 애플리케이션 타입, 운영 체제, 소프트웨어 벤더 또는 소프트웨어 버전을 식별할 수 있는 특성 문자열을 포함

Firefox 유저 에이전트 문자열 레퍼런스 문서 참고

 

응답 컨텍스트

Allow

리소스에 의해 지원되는 HTTP 요청 메소드를 나열

 

Server

요청을 처리하기 위해 오리진 서버에 의해 사용되는 소프트웨어에 대한 정보를 포함

 

범위 요청

Accept-Ranges

서버가 범위 요청을 지원하는지를 나타내며, 지원할 경우 범위가 표현될 수 있는 단위를 나타냄

 

Range

서버가 반환해야하는 문서의 부분을 나타냄

 

If-Range

주어진 etag 또는 날짜가 원격 리소스와 일치할 경우에만 수행되는 조건적 범위 요청을 생성

호환되지 않는 범전의 리소스에서 두 가지 범위의 다운로드를 방지하기위해 사용

 

Content-Range

전체 바디 메시지 중 특정 메시지가 포함된 위치를 나타냄

 

보안

Cross-Origin-Resource-Policy

이 헤더가 적용된 리소스의 응답을 다른 도메인이 읽는 것을 방지

 

Content-Security-Policy (CSP)

주어진 페이지에 대해 유저 에이전트가 로드할 수 있는 리소스를 제어

 

Content-Security-Policy-Report-Only

웹 개발자가 정책을 강제로 적용하지 않고도 그 효과를 실험해볼 수 있게 도와줌

이러한 위반 보고서는 HTTP POST 요청을 통해 지정된 URL로 전송된 JSON 문서로 구성됨

 

Expect-CT

사이트가 잘못 발급된 인증서의 사용이 눈에 띄지 않게 넘어가는것을 방지해주는 인증서 투명성(Certificate Transparency) 요구 보고 및/또는 시행을 옵트인할 수 있게 해줌

사이트가 Expect-CT 헤더를 사용할 때, 사이트는 공개 CT 로그에 나타난 사이트에 대한 모든 인증서를 Chrome이 확인하도록 요청

 

Feature-Policy

소유한 프레임 및 내장된 iframe에서 브라우저 기능의 사용을 허용 및 거부하기위한 메커니즘을 제공

 

Public-Key-Pins (HPKP)

위조된 인증서를 사용한 MITM 공격의 위험을 줄이기 위해 특정 웹 서버에 특정 암호화 공개 키를 연결

 

Public-Key-Pins-Report-Only

헤더에 지정된 report-uri로 보고를 전송하고 피닝을 위반하더라도 클라이언트가 서버에 접속하는 것을 계속 허용

 

Strict-Transport-Security (HSTS)

HTTP 대신 HTTPS를 사용하여 통신하도록 강제함

 

Upgrade-Insecure-Requests

암호화된 응답과 인증된 응답에 대한 클라이언트의 설정을 나타내는 신호를 서버에 전송하며, upgrade-insecure-requests 지시자를 성공적으로 처리 가능

 

X-Content-Type-Options

MIME 스니핑을 비활성화하고 브라우저가 Content-Type에 주어진 타입을 사용하도록 강제함

 

X-Download-Options

브라우저(인터넷 익스플로러)가 파일을 통한 피싱 공격을 방지하기 위해 애플리케이션으로부터 다운로드된 파일에 "열기" 옵션을 표시하면 안되는지 여부를 나타냄

피싱 공격을 방지하지 못할 경우 파일을 애플리케이션의 컨텍스트에서 실행할 권한을 얻게됨

 

X-Frame-Options (XFO)

브라우저가 <frame><iframe><embed> 또는 <object>에서 페이지 렌더링을 허용해야하는지를 나타냄

 

X-Powered-By

호스팅 환경이나 다른 프레임워크에 의해 설정 될 수 있으며, 그들에 대한 정보를 포함하지만 애플리케이션이나 방문자에게 유용하지 않음

잠재적인 취약점 노출을 피하려면 이 헤더를 해제 해야함

 

X-XSS-Protection

교차-사이트 스크립팅 필터링을 활성화

 

 

출처

https://developer.mozilla.org/ko/docs/Web/HTTP/Headers

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers

 

 

 

728x90
반응형