permissions-policy 是用于限制高权限 api(如传感器、摄像头、地理位置等)使用范围的响应头或 meta 标签机制;支持 accelerometer、gyroscope、magnetometer、ambient-light-sensor、geolocation、microphone、camera、display-capture、clipboard-read/write 等指令,语法严格区分大小写与括号用法。

HTML5 的 Permissions-Policy(现名,旧称 Feature Policy)是一个响应头(也可用 <meta> 标签声明),用于控制网页中哪些高权限 API(如摄像头、麦克风、地理位置、传感器等)可以在当前文档或其嵌入的 iframe 中被调用。它不是“开启”功能,而是“限制”功能的使用范围,是现代 Web 安全与隐私保护的重要机制。
明确支持传感器与敏感 API 的策略指令
以下常用指令直接关联传感器和敏感能力,需注意大小写敏感、语法严格:
- accelerometer:控制加速度计访问(如手机晃动检测)
- gyroscope:控制陀螺仪访问(旋转姿态识别)
- magnetometer:控制磁力计(指南针方向)
- ambient-light-sensor:环境光传感器(自动调节亮度)
- geolocation:地理位置 API
- microphone 和 camera:音视频采集设备
- display-capture:屏幕捕获(录屏/共享)
- clipboard-read 和 clipboard-write:剪贴板读写(含敏感文本)
通过 HTTP 响应头设置策略(推荐方式)
服务器应在响应中添加 Permissions-Policy 头。例如,仅允许主文档使用摄像头和加速度计,禁止所有 iframe 使用传感器:
说明:
-
(self)表示仅当前源(同协议+域名+端口)可启用该功能 -
()表示显式禁用(包括自身和所有嵌套 iframe) - 未列出的指令默认继承父文档策略;空值(如
geolocation=)等价于geolocation=() - 多个指令用英文逗号分隔,无空格亦可,但建议加空格提升可读性
使用 标签在 HTML 中声明(有限制)
仅适用于顶层文档(不作用于 iframe),且不能覆盖响应头策略(响应头优先级更高):
注意:
- 必须放在
中,且早于任何可能触发传感器的脚本 - 分号分隔指令(不是逗号),这是与响应头语法的关键区别
- 无法控制 iframe 的行为,若需约束第三方嵌入内容,必须用响应头
验证与调试策略是否生效
浏览器开发者工具(Network → Response Headers)可查看是否正确发送了 Permissions-Policy。运行时可通过 JS 检测 API 是否可用:
navigator.permissions.query({name:'accelerometer'}).then(result => {
console.log('Accelerometer status:', result.state); // 'granted' / 'denied' / 'prompt'
});
}
若策略禁用某 API,navigator.getBattery()、DeviceMotionEvent 等将直接抛出 SecurityError 或返回空对象,不会触发用户提示。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











