从 Chrome 116 开始,我们会在权限提示中添加允许这次选项。我们的目标是让人们能够更轻松地按照自己的方式使用强大的网络功能。允许此次时间:初始情况下,只有针对地理定位、摄像头和麦克风等一些最常用的权限支持在桌面设备上使用。其他功能以及移动网站上的权限提示目前保持不变,但将来可能会有所变化。
新的权限用户体验
Chrome 116 之前的“权限”用户体验
![仅显示 block 和 allow 的权限提示。](https://developer.chrome.google.cn/static/blog/one-time-permissions/images/permission-prompt-showing-4cfa5caa7d33f.png?authuser=7&hl=ro)
系统会为用户提供三个选项:
- Allow:永久允许。
- Block:永久性块。
- 点击 x 按钮:临时屏蔽。之后,网站最多可以再次提示用户三次。
您可以通过地址栏中的网站控件或网站设置管理权限。
Chrome 116 的全新权限用户体验
![包含新的一次性选项的权限提示。](https://developer.chrome.google.cn/static/blog/one-time-permissions/images/permission-prompt-the-o-b78a728d235c9.png?authuser=7&hl=ro)
系统会为用户提供四个选项:
- 仅这次访问时:暂时允许。
- 每次访问时允许:永久允许。
- 不允许:永久性块。
- 点击 x 按钮:临时屏蔽。
如果用户选择允许此次,则授予的权限是临时的,也称为一次性权限。其持续时间仅限于当前与 Web 应用正在进行的互动。
“这次允许”为用户带来的好处和用户体验设计
允许此时间可为用户提供:
- 加强控制。Chrome 用户研究表明,用户通常尚未准备好做出永久的网站权限决策,试图评估他们通过授予权限是否会获得价值。提供一次性“允许”选项可满足这种需求,并降低允许访问的风险。
- 更清晰。而明确的允许此次和每次访问时选项会明确指出其中一个选项是临时性的,另一个是永久性的。
其他浏览器中的一次性权限
在网页上,许多浏览器都支持单次授权,包括 Safari 和 Firefox。若要了解它们在设备上如何运作,请尝试使用 https://permission.site/one-time。请务必尝试地理定位、摄像头和麦克风权限,因为它们可能具有特定行为。
例如:
- 在桌面版 Safari 16 中,默认情况下,地理定位为一次(直到下次导航为止)。用户可以通过复选框来选择将访问权限保留 24 小时。
- 在桌面版 Firefox 115 中,地理定位、摄像头和麦克风权限默认为单次授权。用户可通过复选框选择启用永久访问权限。
影响和建议
单次授权的影响:
- 单次授权的引入不会影响用户之前永久授予的权限。
- 用户根据权限提示做出决定后,在其访问期间,权限状态是被授予或拒绝。单次授权在这方面不会产生任何影响。
- 不过,如果用户选择此次允许,则会在下次访问时再次看到权限提示。
为满足一次性权限要求,我们建议网站所有者执行以下操作:
- 确保您的实现遵循权限方面的最佳实践。查看最佳做法。
- 了解一次性权限何时过期。有关详情,请参阅单次授权的到期。
- 了解 Permissions API 针对一次性权限的行为,以及如何观察到期时间。请在 Permissions API 中查看详细信息。
最佳实践
在这段时间内可能会让用户更有可能授予试用相关功能的权限,但也可能会降低用户授予永久访问权限的意愿。因此,遵循最佳实践变得更加重要。
- 在请求权限之前提供必要的上下文。向用户说明他们将从某项功能中受益的原因。
- 适时适时请求权限。理想情况下,让您的用户表达他们对按照自己的节奏使用某项功能的意图。
- 在用户访问期间,无论用户是选择一次性选项还是永久性选项,都要提供相同的体验。
请参阅权限用户体验中的其他指南。
一次性权限过期
默认情况下,所有网络权限均绑定到一个源站,您可将其视为专属应用。设置允许此次设置后,用户会向某个来源授予一次性权限。实质上,一次性权限会在用户停止主动与该源站互动一段时间后过期。这意味着,如果用户短暂切换到另一标签页中的另一个网页,然后又返回,该网站可以继续使用该功能。
更详细地说,只要满足以下任一条件,一次性权限授予就会过期:
- 相应网页已被关闭、用户离开或被舍弃。这包括关闭 Chrome。
- 自授予权限 16 小时后。
- 用户手动撤消权限(例如,在网站控件中撤消),或通过企业政策撤消该权限。
- 该网页已在后台运行至少 5 分钟,但允许此功能(例如摄像头或麦克风)在后台运行的情况除外。在这种情况下,只要网站使用该功能,Chrome 就会显示标签栏指示器,并且在网页停止使用该功能之前不会启动 5 分钟的计时器。请注意,16 小时的计时器仍在计时。
背景标签页
浏览器标签页位于后台,而当它没有在前台运行时。如果某个标签页在浏览器窗口中显示为可见标签页,且未最小化,它就会出现在前台。
在 Chrome 中,某些功能(例如地理定位)只能在前台标签页中运行。广告不得在后台运行。其他应用(如摄像头和麦克风)可以在后台运行。
标签页栏指示器
标签页在后台运行时继续运行的功能具有标签页栏指示器。例如,相机有一个标签栏指示器。
![一个带红点的标签页。](https://developer.chrome.google.cn/static/blog/one-time-permissions/images/a-tab-a-red-dot-ffdcc0b012d03.jpg?authuser=7&hl=ro)
地理定位不需要标签栏指示器,因为只要该网页位于后台,地理定位访问就会立即暂停。
示例
- 地理定位:用户位于
example.com
并授予一次性地理定位访问权限。用户切换到另一个标签页。这会使example.com
成为后台标签页。由于 Chrome 不允许后台地理定位访问权限,因此地理定位访问权限会立即暂停,但一次性授予的权限仍然有效。如果用户在五分钟内返回example.com
,页面可以恢复地理定位访问(并且会重置 5 分钟的到期计时器)。否则,一次性权限将会过期。 - 摄像头/麦克风:用户已连接到
example.com
,并授予单次摄像头访问权限。用户切换到另一个标签页。这会使example.com
成为后台标签页。相机访问权限会继续,因为 Chrome 会允许在后台继续访问相机。为确保用户了解摄像头使用情况,Chrome 会一直显示摄像头的标签栏指示器。有时,网站可能会决定停止使用摄像头,在这种情况下,系统会启动 5 分钟的到期计时器。若闲置 5 分钟后,相机使用权限将失效,一次性权限就会过期。
Permissions API
如需查询 API 权限的状态,您可以使用 Permissions API:
- 如果用户选择这次允许,Permission API 状态会设置为
granted
。也就是说,未过期的一次性权限和永久性权限无法区分,并且具有相同的状态:granted
。 - 一次性权限过期后,状态将重新设置为
prompt
。 - 如需观察一次性权限的到期时间,请注册
PermissionStatus.onchange
事件处理脚本。
演示
- 在桌面设备上打开 Chrome 116 或更高版本。
- 打开
chrome://flags/#one-time-permission
,然后选择启用。重启 Chrome。如果单次授权尚未在 Chrome 浏览器中推出,此步骤将强制启用相应权限。 - 打开 https://permission.site/one-time。
- 点击地理定位按钮。
- 查看新的一次性权限提示。
- 选择这次允许。
- 打开网站控件。请注意,您可以管理单次授权。
- 关闭 https://permission.site/one-time 标签页。确保该来源的其他标签页均未打开。
- 在新标签页中打开 https://permission.site/one-time。
- 打开网站控件。前往网站设置。
- 您会发现地理定位权限现已恢复到初始状态:Ask(默认)。
结论和反馈
单次授权可为用户提供更多选择,Chrome 的全新权限界面可为各种浏览器和平台提供更一致的权限用户体验。
如果您遇到任何与一次性权限相关的问题,请提交新的 crbug 问题以获取权限提示。
致谢
感谢 Rachel Andrew、Serena Chen、Balazs Engedy、Marian Harbach、Florian Jacky 和 Thomas Steiner 审阅本文。