无需登录 数据私有 本地保存

权限API测试器 - 摄像头/位置/通知

14
0
0
0

权限API测试器

测试浏览器权限接口:摄像头、地理位置、桌面通知

需要HTTPS Permissions API 响应式测试
权限状态概览
摄像头: 检测中... 位置: 检测中... 通知: 检测中...
摄像头
检测中

使用 getUserMedia API 请求摄像头访问权限,实时预览视频流。

地理位置
检测中

使用 Geolocation API 获取设备当前位置信息,支持持续追踪。

点击下方按钮获取位置
纬度--
经度--
精度--
时间--
桌面通知
检测中

使用 Notification API 请求发送桌面通知的权限并测试。

通知权限
未检测

通知权限状态:--
需要HTTPS或localhost环境
权限API知识点
Permissions API 可静默查询权限状态,无需触发权限弹窗。使用 navigator.permissions.query()
安全上下文要求:摄像头、位置、通知等敏感API大多需要HTTPS或localhost才能正常工作。
用户手势:权限请求通常需要由用户主动触发(点击按钮),防止滥用。
常见问题 (FAQ)

Permissions API 是现代浏览器提供的一套接口,允许开发者静默查询用户对特定权限(如摄像头、位置、通知)的授权状态,而无需触发权限请求弹窗。通过 navigator.permissions.query({name: '权限名'}) 可以获取权限状态为 granted(已授权)、denied(已拒绝)或 prompt(待询问)。该API还能监听权限状态变化,非常适合在调用敏感功能前做预检。

出于安全考虑,Chrome、Firefox等主流浏览器将摄像头(getUserMedia)、地理位置(Geolocation)、通知(Notification)等敏感API归类为"仅限安全上下文"的功能。安全上下文通常指通过HTTPS提供的页面或localhost本地开发环境。这可以防止中间人攻击窃取敏感数据。如果您的站点尚未启用HTTPS,建议使用Let's Encrypt等免费SSL证书服务。

不同浏览器重置权限的方式不同:
Chrome:点击地址栏左侧的锁图标 → 找到对应权限 → 选择"允许"或"重置权限"。也可以进入 chrome://settings/content 进行管理。
Firefox:点击地址栏左侧图标 → "权限" → 修改对应设置。或在 about:preferences#privacy 中管理。
Safari:在"偏好设置" → "网站"中找到对应权限进行修改。
Edge:类似Chrome,通过地址栏锁图标或 edge://settings/content 管理。

Permissions API 的核心方法得到主流浏览器广泛支持,但具体权限名称存在差异:
通知 (notifications):Chrome、Firefox、Edge、Safari 16+ 均支持查询。
地理位置 (geolocation):Chrome、Edge、Firefox 支持;Safari 部分支持。
摄像头 (camera):Chrome、Edge 支持;Firefox 可能不支持直接查询,需回退到 getUserMedia 检测。
建议始终做好降级处理,在查询失败时直接通过对应API的实际调用来判断权限状态。

这正是 Permissions API 的核心价值。使用 navigator.permissions.query({name: 'camera'}) 等方法可以静默获取权限状态,不会弹出任何权限请求对话框。这适用于:
• 页面加载时预检权限,决定是否显示相关UI。
• 在调用敏感API前判断是否需要引导用户授权。
• 监听 onchange 事件,实时响应用户在浏览器设置中修改权限的操作。
注意:部分浏览器对某些权限名称的查询仍会抛出异常,需要try-catch包裹。

移动端浏览器的权限行为有显著差异:
iOS Safari:对Permissions API支持有限(iOS 16+改善),通知API在iOS上需添加到主屏幕才支持,摄像头需要用户明确授权。
Android Chrome:支持良好,但位置权限可能受系统级设置影响。
微信内置浏览器:权限支持受限严重,建议引导用户在外部浏览器中打开。
PWA应用:安装后的PWA通常拥有更完整的权限支持,体验接近原生应用。