我需要给我的Chrome扩展什么权限(如果有的话),才能让它进行远程AJAX调用?

4

我为我的图书馆编写了一个Chrome扩展程序。它会向学校图书馆的api.library.edu发出AJAX请求。

我的扩展程序使用jQuery,代码如下:

$.get("http://api.library.edu/?period=1month", function (data) {
    // process data
});

当我加载我的扩展时,它会进行AJAX调用并返回数据。
现在,我没有为我的扩展程序授予任何权限(permissions[])。
当我发布它时,我的扩展程序会工作吗?难道不应该需要特殊权限才能使用jQuery进行AJAX调用吗?
谢谢!我只是想确保我正确编写了我的扩展程序。
1个回答

3

您的扩展程序无需额外权限即可在相同源内进行AJAX调用。但是,如果api.library.edu未设置正确的CORS头,则您可能需要请求跨域权限以访问该域:

{
  "name": "My extension",
  ...
  "permissions": [
    "http://api.library.edu/"
  ],
  ...
}

来自谷歌文档:

每个正在运行的扩展都存在于其自己独立的安全来源中。在不请求额外权限的情况下,扩展可以使用XMLHttpRequest获取其安装内的资源。

...

通过将主机或主机匹配模式(或两者)添加到清单文件的权限部分,扩展可以请求访问其来源之外的远程服务器。

如果您的扩展已经正常工作,那么我会认为库API已经设置了跨域标头,因此您不需要任何其他权限。


2
谢谢。现在我知道为什么它能工作了。一个月前,我向 api.library.edu 的系统管理员请求设置 Access-Control-Allow-Origin: * 这个头部信息。他做到了,这就是为什么它能工作的原因。 - bodacydo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接