独立站与嵌入广告/小工具页常见事故:主站想禁麦克风,却仍被第三方 iframe 拉起 getUserMedia;或地理定位在生产误开 *。
MDN《Permissions-Policy header》说明:该响应头用于允许或拒绝文档及其中 iframe 使用浏览器能力。策略语法为指令=allowlist,可选 per-directive 的 report-to;多指令可用逗号分隔,也可拆成多条头。allowlist 常见取值包括 *、() 空列表、self、以及带引号的源列表;空列表表示顶层与嵌套上下文均禁用该能力。文档强调:头上的 allowlist 定义「潜在允许」的超集,iframe 的 allow 属性在该超集内再授权;因此宜在 HTTP 头写可接受的最宽范围,再在各 iframe 收窄。若 iframe 导航到未在 allow 中列出的源,默认不把策略带到新源。禁用强能力示例可将 microphone=()、geolocation=()。违规可用 Reporting API:配合 Reporting-Endpoints 命名端点,并在 Permissions-Policy 指令上写 report-to=端点名;省略时可能落到名为 default 的端点。也可用 ReportingObserver 在页内观察。本场景据此输出开关与上报核对清单。禁止声称「生产头已改好」。