Javascript Chrome Web Store对使用公共API发出了过于严格的警告

Javascript Chrome Web Store对使用公共API发出了过于严格的警告,javascript,json,google-chrome,google-chrome-extension,chrome-web-store,Javascript,Json,Google Chrome,Google Chrome Extension,Chrome Web Store,我最近做了一个Chrome扩展(),它使用了纽约时报的API 我向API发送一个AJAX请求,它用JSON响应。但是,为了能够这样做,我需要将manifest.json文件中的权限设置为https://api.nytimes.com/*因此: ... "permissions": [ "https://api.nytimes.com/*" ], ... 为了不让分机崩溃和烧毁,请给我一个提示 然而,每当用户从Web应用商店安装my Extension时,他们都会收到一条可怕的警告:

我最近做了一个Chrome扩展(),它使用了纽约时报的API

我向API发送一个AJAX请求,它用JSON响应。但是,为了能够这样做,我需要将
manifest.json
文件中的
权限设置为
https://api.nytimes.com/*
因此:

  ...
  "permissions": [ "https://api.nytimes.com/*" ],
  ...
为了不让分机崩溃和烧毁,请给我一个提示

然而,每当用户从Web应用商店安装my Extension时,他们都会收到一条可怕的警告:“[扩展]可以访问api.nytimes.com上的所有数据”

我所做的就是发送一个请求,并从一个公共API接收+解析一个响应。这个警告似乎过分了。我没有以任何方式存储任何用户数据


有没有办法解决这个问题,即有没有办法在Chrome扩展中使用API而不向用户显示此警告?我是不是以一种非规范的方式来处理这个问题?

没有办法按照你的要求去做。chrome只是告诉用户你的应用程序可以做什么。他们没有办法相信你。我建议你做的和我看到其他人做的是在你的应用程序描述页面上通知潜在的下载者警告

差不多

`警告:你可能会收到一条可怕的警告信息,因为我的 扩展等等,我鼓励你,我不会对你的数据做任何事情 如果你好奇的话,你可以看看来源。”

不管怎样,大多数人现在已经习惯于看到和接受这些警告。你的警告实际上很有意义,因为用户可以直观地看到该页面与你的扩展之间的关系

阅读并修改您访问的所有网站上的所有数据

处理起来有点棘手


更直接地处理您的原始问题:它是您放入“权限”数组中的内容,用于确定生成了哪些警告(如果有)


所有可能的警告消息及其应用的权限的列表。该页面还包含不生成任何警告消息的权限列表。

如果API是公共的,则可能启用了许可的CORS标头

一些轶事证据表明,《纽约时报》API就是这样,至少对于某些端点(没有API键无法测试)。如果您正在使用的端点没有启用它


在这种情况下,对该API的跨源请求不需要权限,XHR无论如何都应该成功。

Xan和Luke的回答当然是正确的,但没有提到一个重要的替代方案来帮助您:

您可以将其设置为一个请求,并在运行时稍后进行请求,并解释为什么需要它(最好先请求,如果用户拒绝,则解释他们必须接受)

请记住,用户操作后必须询问可选权限,因此显示一个带有按钮的无模式对话框,并在单击按钮时请求权限。我的扩展中也有类似问题


在我的例子中,我只需要创建和读取一个特定的谷歌电子表格,但这意味着要求他们的整个谷歌驱动器进行读/写操作。

我想,除非谷歌提供一些更精细的权限,否则从技术上讲,你的扩展可以访问网站上的所有用户数据。这意味着警告的位置是正确的。是的,我通常不会这样做o不久之后,当我到达我的笔记本电脑,找到编辑3的编辑器时,显示一个模式对话框不是一个好主意,因为当用户不关心扩展时,它会阻止用户与网站交互。因此,我恢复了编辑的那部分,并放回“无模式”。“任何你放在“权限”中的内容”数组将生成一个警告“根本不是这样。NYTimes API确实有许可的CORS头,但由于它是一个Chrome扩展,我认为需要根据我读取的内容设置权限。不,如果CORS设置为*则您不需要权限。您可以覆盖限制(或缺失)权限具有权限的CORS头。