Chrome扩展程序错误可能与跨源权限有关

时间:2014-04-30 08:21:05

标签: google-chrome-extension xmlhttprequest

我们运行的扩展程序需要在多个网站上提取和搜索数据。

我们一直在使用Jquery使用跨源XMLHttpRequests,直到现在才遇到问题。

异步请求正在成功执行。即使我们没有按照此处的建议明确请求跨域权限,情况也是如此:https://developer.chrome.com/extensions/xhr

这就是我们的清单目前的相关部分:

{

"background" : {
   "scripts": ["background.js"] 
 },
"permissions" : ["storage" ],
"content_scripts" : [
    {
      "matches" : ["<all_urls>"],
      "js" : [ "jquery-2.0.0.min.js","jquery-ui-1.10.3.custom.min.js","date.js",
    "file1.js","file2.js",
    "fileN.js"],     
      "run_at" : "document_idle",
      "all_frames" : false
    },
   ],
 "content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'",
  "web_accessible_resources" : [ "icona.png" , "iconb.png","iconc.png"],
  "manifest_version": 2
}

即使权限没有明确请求访问从中异步获取数据的URL,扩展也可以正常工作。

不久之后,我们收到了一些用户的抱怨,说扩展程序不再有效,也没有显示数据。我们无法在Linux上的Chrome(版本34.0.1847.132)中复制此问题。似乎正面临这个问题的用户似乎使用的是Mac OS X,或者更少使用Windows。

我们无法弄清楚为什么这个问题是特定于操作系统的,或者这是一个奇怪的相关性。

如果问题确实是错误的权限之一,我们可以将权限设置为

["http://*/","https://*/"] 

没有自动禁用扩展程序以供用户手动重新启用?

我们已经通过"matches" : ["<all_urls>"]要求对所有网址的权限这是否确保上述权限的添加不会触发自动停用扩展程序?

1 个答案:

答案 0 :(得分:1)

Chrome扩展程序允许跨源请求,但您必须在清单的permissions部分声明要访问的主机。 <{1}}内容脚本部分不应该授予您主机权限。

您应该向清单添加主机权限。我不知道更新会发生什么。考虑到已经提示用户允许您的扩展程序访问其所有网络数据,可能您的扩展程序在更新时不会被禁用。您可以通过在Webstore上使用原始版本创建仅限测试人员的扩展,安装,更新并查看会发生什么来测试。