Permissions-PolicyPermissions-Policy는 카메라·마이크·위치정보·전체화면·결제·자이로스코프 같은 강력한 브라우저 기능을, 이 문서와 그 안의 iframe에서 어떤 오리진이 사용할 수 있는지 오리진 단위로 허용·차단하는 보안 헤더입니다. 구식 Feature-Policy 헤더의 후속입니다.
문법은 feature=(allowlist) 쌍을 쉼표로 나열하는 형태입니다. allowlist 토큰은 *(모든 오리진), self(동일 오리진), 따옴표로 감싼 특정 오리진, 그리고 빈 괄호 ()(완전 차단)입니다. 예: geolocation=(self "https://maps.example.com")는 자신과 지정한 지도 오리진에만 위치정보를 허용하고, camera=()는 카메라를 어디서도 못 쓰게 막습니다. 값이 여러 토큰이면 괄호 안에 공백으로 구분해 나열합니다.
가장 중요한 활용은 교차 출처 iframe에 대한 기능 위임 통제입니다. 광고·위젯 iframe이 사용자 몰래 카메라·마이크·위치정보를 요청하지 못하도록 상위 문서가 정책으로 차단하거나, 신뢰하는 특정 오리진에만 위임할 수 있습니다. iframe 자체에도 allow 속성으로 하위 위임을 세밀히 제어합니다.
Permissions-Policy는 Client Hints 위임에도 쓰입니다. ch-ua-platform-version 같은 고엔트로피 클라이언트 힌트를 교차 출처 서브리소스·iframe로 전달하려면, Accept-CH로 옵트인하는 것에 더해 Permissions-Policy의 해당 기능(예: ch-device-memory)을 그 오리진에 허용해야 합니다. 위반 사항은 Reporting API로 보고하도록 구성할 수 있습니다.
Permissions-Policy: <feature>=(<allowlist>)[, <feature>=(<allowlist>)]*e.g. Permissions-Policy: geolocation=(self "https://maps.example.com"), camera=(), microphone=()
* | 모든 오리진(자신 포함, 교차 출처 iframe 포함)에 기능 허용. |
self | 이 문서와 같은 오리진에서만 기능 허용. |
"<origin>" | 따옴표로 감싼 특정 오리진에 기능 허용(주로 임베드된 iframe 위임용). |
() | 빈 허용 목록. 자신을 포함해 어떤 오리진에도 기능을 완전히 비활성화. |