我最近制作了一个使用纽约时报API的Chrome扩展程序(FrontPage)。
我向API发送一个AJAX请求,它以JSON响应。但是,为了能够这样做,我需要将permissions
文件中的manifest.json
设置为https://api.nytimes.com/*
:
...
"permissions": [ "https://api.nytimes.com/*" ],
...
为了不让Extension崩溃并刻录并提供Cross Origin rejection。
但是,每当用户从网上应用店安装我的扩展程序时,他们就会发出一个可怕的警告:“[扩展程序]可以访问api.nytimes.com上的所有数据”。
我所做的就是发送请求并接收+解析来自公共API的响应。警告似乎过分了。我不是以任何方式存储任何用户数据。
有没有解决方法,即有没有办法在Chrome扩展程序中使用API而不向用户显示此警告?我是以非规范的方式接近这个吗?
答案 0 :(得分:2)
没有办法做你要问的事。 chrome只是告知用户您的应用可以执行的操作。他们无法信任你。我建议您做的以及我看到其他人做的是在您的应用说明页面上告知潜在的下载报警器。
像
这样的东西`警告:你可能会得到一个可怕的警告信息,因为我的 延期等等,我鼓励你对你的数据做任何事情 如果你好奇,你可以看一下来源。“
现在大多数人习惯于看到并接受这些警告。您的实际意义非常大,因为用户可以直观地看到该页面与您的扩展程序的关系。
阅读并修改您访问的所有网站上的所有数据
处理起来有点棘手。
更直接地处理您的原始问题:它放在“权限”数组中的内容,用于确定生成哪些警告(如果有)。
Here is a list所有可能的警告消息及其适用的权限。该页面还包含不会生成任何警告消息的权限列表。
答案 1 :(得分:2)
如果API是公共的,则可能是它启用了允许的CORS标头。
一些轶事证据from the developers forum表明NYTimes API就是这种情况,对于至少一些端点(没有API密钥就无法测试它)。如果没有为您使用的端点启用you can request that。
在这种情况下,您不需要对该API的跨源请求的权限,XHR无论如何都应该成功。
答案 2 :(得分:1)
Xan和Luke的答案当然是正确的,但没有提到可以帮助你的重要替代方案:
你可以把它变成optional permission并在运行时稍后请求它,并在前面解释为什么需要它(更好的是首先要求它,如果用户拒绝然后解释它们,他们必须接受)。
请记住,在用户操作后必须询问可选权限,因此请显示带有按钮的无模式对话框,并在单击按钮时请求权限。我的扩展中有类似的问题。
在我的情况下,我只需要创建和阅读特定的谷歌电子表格,但这意味着要求他们的整个谷歌驱动器进行读/写。