Referrer-Policy
사용법
브라우저가 링크를 따라가거나 하위 리소스를 로드할 때, 브라우저는 보통 출발 페이지의 URL을 담은 Referer 헤더를 보냅니다. Referrer-Policy 헤더는 URL의 어느 부분을 공유할지, 또는 Referer 헤더를 아예 보낼지 여부를 사이트 운영자가 제어할 수 있게 합니다.
개인정보에 민감한 사이트는 쿼리 매개변수, 경로, 오리진 세부 정보가 제3자에게 새어 나가지 않도록 리퍼러 정보를 제거합니다. 이 정책은 해당 페이지에서 시작된 내비게이션, 하위 리소스 요청, 프리페치 작업에 적용됩니다.
쉼표로 구분된 정책 목록은 대체 연쇄로 작동합니다. 브라우저는 목록에서 자신이 지원하는 마지막 정책을 고르므로, 앞으로의 호환성을 고려한 배포가 간단해집니다.
정책 설정
리퍼러 정책을 설정하는 세 가지 메커니즘이 있습니다.
요소 수준 속성이 페이지 수준 meta 태그보다 우선하고, meta 태그가 HTTP 헤더보다 우선합니다. HTTP 헤더는 HTML이 파싱되기 전에 정책이 적용되므로 가장 신뢰할 수 있는 방법입니다.
no-referrer
no-referrer 디렉티브는 Referer 헤더를 완전히 억제합니다. 해당 페이지에서 시작된 어떤 요청에도 URL 정보가 전송되지 않습니다.
no-referrer-when-downgrade
no-referrer-when-downgrade 디렉티브는 동일 프로토콜 요청에 전체 URL(오리진, 경로, 쿼리 문자열)을 보냅니다. 요청이 보안을 낮추는 경우(HTTPS에서 HTTP로)에는 Referer 헤더가 생략됩니다.
origin
origin 디렉티브는 URL의 오리진 부분(스킴, 호스트, 포트)만 보냅니다. 모든 요청에서 경로와 쿼리 문자열이 제거됩니다.
origin-when-cross-origin
origin-when-cross-origin 디렉티브는 동일 출처 요청에 전체 URL을 보냅니다. 교차 출처 요청이나 프로토콜 다운그레이드에서는 오리진만 전송됩니다.
same-origin
same-origin 디렉티브는 동일 출처 요청에 전체 URL을 보내고, 교차 출처 요청에는 Referer 헤더를 완전히 생략합니다.
strict-origin
strict-origin 디렉티브는 오리진만 보내되, 프로토콜의 보안 수준이 유지되거나 향상될 때(HTTPS에서 HTTPS로, 또는 HTTP에서 HTTP로)만 보냅니다. 프로토콜 다운그레이드가 발생하면 헤더가 억제됩니다.
strict-origin-when-cross-origin
strict-origin-when-cross-origin 디렉티브는 동일 출처 요청에 전체 URL을 보내고, 같은 보안 수준의 교차 출처 요청에는 오리진만 보내며, 프로토콜 다운그레이드 시에는 헤더를 생략합니다. 이는 Referrer-Policy가 설정되지 않았을 때 최신 브라우저가 적용하는 기본 정책입니다.
unsafe-url
unsafe-url 디렉티브는 목적지나 프로토콜과 무관하게 모든 요청에 전체 URL(오리진, 경로, 쿼리 문자열)을 보냅니다. 가장 많은 정보를 노출하므로 운영 환경에 적합한 경우는 드뭅니다.
예시
교차 출처 내비게이션에 오리진만 보내는 엄격한 기본 정책입니다.
Referrer-Policy: strict-origin-when-cross-origin
모든 리퍼러 데이터를 억제하는 개인정보 중심 구성입니다.
Referrer-Policy: no-referrer
브라우저가 지원하면 strict-origin을 고르고, 그렇지 않으면 no-referrer로 되돌아가는 대체 연쇄입니다.
Referrer-Policy: no-referrer, strict-origin