Hal*_*100 6 permissions firefox-addon firefox-addon-webextensions manifest.json
Manifest v3 Firefox 扩展可以在运行时"Access your data for all websites"请求用户的权限吗?
该选项通常在firefoxabout:addons内置页面中管理:
我的扩展程序的某些功能需要此权限才能工作,如果尚未授予该权限,我想提示用户授予该权限。
所需的工作流程如下:
当用户单击按钮触发需要此权限的功能时,扩展程序会检查它是否有权访问所有网站的数据。
如果尚未授予权限,则扩展程序应向用户请求该权限。如果已授予权限,则应触发该功能。
我尝试过使用browser.permissionsAPI,但找不到在运行时请求此特定权限的方法。
是否有其他方法可以在运行时向用户请求此权限,或者根本不可能?
编辑:
不确定这是否是预期的行为,但发送仅包含“来源”且未指定“权限”密钥的权限请求似乎有效:
browser.permissions.request({origins: ['<all_urls>']})
Run Code Online (Sandbox Code Playgroud)
发送“origins”参数设置为的权限请求"<all_urls>"相当于请求“访问所有网站的数据”权限:
browser.permissions.request({origins: ['<all_urls>']})
Run Code Online (Sandbox Code Playgroud)
MDN 权限文档指出和origins参数permissions都是可选的。
通过设置origins: <all_urls>,扩展程序实际上正在请求“访问所有网站的数据”的权限。
可以通过调用browser.permissions.getAll()并检查<all_urls>in的存在来检查此权限是否存在permissions.origins。
实现示例:
const hasAllUrlsPermission = () => {
return browser.permissions.getAll()
.then(permissions => permissions.origins.indexOf("<all_urls>") > - 1);
}
Run Code Online (Sandbox Code Playgroud)
该解决方案在 Firefox v.112 上进行了测试。
在 Firefox 扩展中授予<all_urls>权限可能会给安全和隐私带来风险。
因此,Mozilla 扩展研讨会建议
<all_urls>如果可以的话,避免获得主机许可。
在可能且适用的情况下,他们的建议是
使用
activeTab而不是tabs和主机权限
| 归档时间: |
|
| 查看次数: |
1697 次 |
| 最近记录: |