Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension 在chrome扩展中获取getJSON上的同源策略错误_Google Chrome Extension - Fatal编程技术网

Google chrome extension 在chrome扩展中获取getJSON上的同源策略错误

Google chrome extension 在chrome扩展中获取getJSON上的同源策略错误,google-chrome-extension,Google Chrome Extension,我的Chrome extension background.js检查一个条件是否为真,如果为真,从我的服务器下载一个脚本,对DOM进行更改。现在,我试图再次从下载的脚本向我的服务器发出jquery getJSON调用,但得到的是XMLHttpRequest无法加载https://www.mydomain.com/loadit.php?h=&fr=0&type=5&category=. 起源http://thisdomain.com 访问控制允许原点不允许` 现在,我的清单文件包含以下内容: "

我的Chrome extension background.js检查一个条件是否为真,如果为真,从我的服务器下载一个脚本,对DOM进行更改。现在,我试图再次从下载的脚本向我的服务器发出jquery getJSON调用,但得到的是
XMLHttpRequest无法加载https://www.mydomain.com/loadit.php?h=&fr=0&type=5&category=. 起源http://thisdomain.com 访问控制允许原点不允许`

现在,我的清单文件包含以下内容:

 "permissions": [
 "tabs",
 "http://*/*",
 "https://*/*"
我认为它应该允许来自任何url的跨源请求,那么为什么我会出现错误呢


编辑:更奇怪的是,我从下载的脚本中插入了一个外部css文件和另一个js文件(jquery),这两个文件都没有给我带来任何问题。只是getJSON请求确实…

虽然我仍然不知道扩展不允许跨域请求的确切原因,但我能够通过使用jquery.Ajax和Jsonp而不是getJSON来完成请求。

问题似乎是您添加了一个
标记,应该在主页和内容脚本的上下文中执行。但是,
getJSON
执行的跨域请求仅在内容脚本上下文中允许,并且在主页中失败。(可能我错了——可能它只在主页上下文中运行,而不在内容脚本中运行。)如果添加一些调试输出,您是否可以看到函数运行两次,一次成功,一次失败?再详细说明一下:主页和注入的内容脚本有单独的DOM,但共享相同的DOM。添加
操作共享DOM,这将导致代码在两种上下文中运行。(但我不是100%确定它会运行——它可能只在主页上运行,例如,为了避免重复的DOM操作。)@apsillers感谢您的评论。请问“在内容脚本上下文中执行”是什么意思?我不确定我是否理解这两种不同的上下文…@Phil当您将扩展放在一起时,在
manifest.json
中列出了脚本。这些就是阿普西勒所说的“主要”剧本。从html页面链接的任何脚本都是“内容”脚本。这两种脚本具有不同的权限和运行时。@DonRhummy啊,谢谢。碰巧,我根本没有使用“内容脚本”。我只有从我的服务器下载另一个脚本的后台脚本。