我了解到Chrome在严格添加新权限时禁用了扩展程序。
当我向扩展程序添加新功能时,我需要在permissions
列表中添加新网站。现在我知道我应该使用optional_permissions
。
我的问题是:
permissions
移至optional_permissions
,用户是否需要再次批准这些网站?或者只是我随着时间的推移添加的那些。是否有任何这些更改都会导致扩展程序被禁用?:
一个。我在matches
content_scripts
部分添加了网站
湾我在matches
externally_connectable
部分添加了网站
有没有办法在externally_connectable
中定义optional_permissions
?
相关链接:chrome.permissions | Permission Warnings
更新:当Chrome停用我的扩展程序后,我在清单中添加了content_scripts
>上的一个网站matches
和externally_connectable
以及matches
网站。后者在权限警告中显示一个新行"Communicate with cooperating websites"
。我不确定哪个更改导致了禁用,这也是我问externally_connectable
的原因。
答案 0 :(得分:8)
为了测试 Chrome停用扩展程序,我在Chrome网上应用店中创建了一个私人扩展程序。
我从manifest.json
的简单定义开始,然后逐个添加了字段和设置。对于每个测试,我:
在 13次测试之后,这就是我发现的:
manifest
中的更改"content_scripts"
>处添加条目"matches"
[警告:“在example.com上阅读和更改您的数据”] "externally_connectable"
> {"ids", "matches"}
[警告:“与合作网站沟通”] manifest
中的更改(无警告)"declarativeContent"
权限"optional_permissions"
>所有主持人"externally_connectable"
>处添加条目"ids"
(在externally_connectable
被接受后)"externally_connectable"
>处添加条目"matches"
(在externally_connectable
被接受后)"externally_connectable"
>处添加没有权限的主机条目"matches"
(在externally_connectable
被接受后)"incognito": "split"
"content_security_policy"
> script-src URL "web_accessible_resources"
另外,permission_warnings#nowarning文档中列出的权限。
我可能做过像"web_accessible_resources"
这样的愚蠢测试,但我更喜欢让Chrome再次禁用我的扩展程序。
由于我要转移到optional_permissions
,permissions
中列出的所有主机都将被删除。所以,我想知道当新的更新不再具有有问题的权限时,禁用的扩展会发生什么:
更新1:在"content_scripts"
>处添加新主机"matches"
=>延期禁用
更新2:有问题的主机已从"content_scripts"
=>中删除再次启用扩展程序
总而言之,如果您犯了错误,可以发布新版本,回滚导致扩展程序被禁用的更改。
如果我将网站列表从
permissions
移至optional_permissions
,用户是否需要再次批准这些网站?或者只是我随着时间推移而添加的那些。
答案很简单,没有。 Chrome会随时间存储为扩展程序提供的所有权限。因此,只有optional_permissions
上的新主机需要获得批准。
答案 1 :(得分:1)
- 如果我将网站的列表从权限移动到optional_permissions,用户是否需要再次批准这些网站?或者只是我随着时间的推移添加的那些。
醇>
新用户:是的,他们需要批准它。
更新的现有安装:很可能没有。
考虑一下:即使您完全删除了权限,然后再将其重新置之,它仍然被视为已授予权限。
一般文档引用是:“Chrome会提示用户,如果添加权限会产生与用户已经看到和接受的不同的警告消息。”
- 中的条目的
是否有任何这些更改都会导致扩展程序被禁用?:
一个。我在
中的条目的matches
content_scripts
部分添加了网站湾我在
matches
externally_connectable
部分添加了网站 醇>
一个。向content_scripts
添加匹配等同于提供完整的主机权限,并且如果它是新主机,则会导致您的扩展被禁用。如果您已拥有该主机的主机权限,则不会禁用该主机。
湾我不知道。理论上,这不会授予您的扩展任何新权限,因此不应该。
- 有没有办法在optional_permissions中定义external_connectable?
醇>
根据文档,没有。这不是开始的许可。