我的Chrome扩展程序中这些权限是否必填?

时间:2016-06-15 23:06:42

标签: google-chrome-extension

我正在使用镀铬扩展程序,必须与某些api联系。 第一个版本在清单中有此权限:

"permissions": [ "API_1" ],

我可以联系此API:

var xhr = new XMLHttpRequest();
xhr.open('GET', "API_1" + someArguments, true);
xhr.onreadystatechange = function()
{
    // ...
}

此版本已发布,但现在我需要我的扩展程序才能联系其他API,因此我使用与新API相同的代码:

var xhr = new XMLHttpRequest();
xhr.open('GET', "API_2" + someArguments, true);
xhr.onreadystatechange = function()
{
    // ...
}

在这个新版本中,如果没有" API_2"的许可,我就不会有任何警告或错误。如果我添加了API_2的权限,则在更新时将禁用已安装的扩展。所以我的问题是:API_1和API_2的权限是否真的是强制性的?

2 个答案:

答案 0 :(得分:2)

如果您只是使用API​​主机权限,那么它完全取决于一件事:CORS policy远程服务器。

在发出XHR请求时,如果请求是跨域的(来自扩展程序,除了同一域中的内容脚本除外),Chrome将检查服务器回复中的CORS headers。< / p>

默认情况下,如果服务器未指明任何内容,则跨域请求为not allowed by the web security model。如果您要求的某些内容从未打算成为公共API,则这是典型的。在权限overrides this中列出API匹配模式。

但是,对于公共API,通常包括一个允许的CORS头(毕竟,可能使用此API的其他Web应用程序不能覆盖安全模型,只有扩展可以)。在这种情况下,不需要许可。

答案 1 :(得分:1)

在没有列出API的情况下很难知道,但谷歌的文档提供了一种检查新权限将如何影响警告的简单方法:

  

如果您想确切了解用户会收到哪些警告,请将您的扩展程序打包到.crx文件中,然后安装。

     

要查看扩展程序自动更新时用户将收到的警告,您可能会遇到更多麻烦并设置自动更新服务器。要执行此操作,请首先使用“update_url”键创建更新清单并从扩展中指向它(请参阅自动更新)。接下来,将扩展名打包到新的.crx文件中,然后从此.crx文件安装应用程序。现在,更改扩展程序的清单以包含新权限,并重新打包扩展程序。最后,点击chrome:// extensions页面的“立即更新扩展程序”按钮,更新扩展程序(以及所有其他具有未完成更新的扩展程序)。

基本上,创建两个测试扩展,一个是您的原始测试,另一个是您的更新。按照此过程进行模拟更新,您将看到获得的警告(如果有)。

如果您在更新中遗漏了API_2权限并且一切正常,那么其权限不一定要包含在清单中。

Source