我很好奇,如果以下情况是Chrome中的错误,按预期工作或开发人员错误。注入内容脚本和请求跨源许可
所以,我有一个扩展。在它的manifest.json我请求跨域权限两个站点:
"permissions": [
"http://www.foo.com/*",
"http://www.bar.com/*"
]
我也声明内容脚本:
"content_scripts": [
{
"matches": ["http://www.foo.com/*"],
"js": ["injectedScript.js"]
}
]
所以,我指出,我想注入“injectedScript .js“放入所有foo.com域。 “injectedScript.js” 看起来像:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = handleStateChange; // Implemented elsewhere.
xhr.open("GET", 'http://www.bar.com/123'), true);
xhr.send();
现在,一个iframe添加到我的Chrome扩展的页面。它看起来像这样:
<iframe src="http://www.foo.com/123"></iframe>
这个框架的src我的内容脚本模式相匹配。因此,当框架加载时,injectScript.js被注入其中。 但是注入脚本中的XMLHttpRequest失败。
现在,这让我想知道预期的行为是什么。当我请求适当的权限时遇到CORS问题令人沮丧......但是我也可以理解,我试图从我的chrome扩展之外的原点访问“http://www.bar.com/123”......尽管加载到扩展中的iframe我有权访问。
任何关于此事的想法?
编辑:如果你想知道什么我可以在从实际情况来看越来越 - 我想注入一些JavaScript可以调用getImageData在注入的页面的视频。但是,我不能,因为getImageData认为视频的src是有污染的数据。我已经请求了适当的权限,但是它并没有缓冲到iframe中。
UPDATE:这里有一个画面:http://i.imgur.com/PR48HO2.png
我面临同样的问题。我知道你已经找出了原因,并在你的(不幸的)扩展中解决它。你能分享这个解决方案吗(或许你自己添加一个答案)? – 2017-05-05 01:44:26