我想知道以下情况是Chrome的错误、按预期工作还是开发者的错误。
所以,我有一个扩展程序。在它的manifest.json中,我请求两个网站的跨域权限:
现在,我在Chrome扩展程序的页面中添加了一个iframe。它看起来像这样:
这个框架的src与我的内容脚本模式匹配。因此,当框架加载时,injectedScript.js会被注入其中。但是,在injectedScript内部的XMLHttpRequest失败了。 现在,这让我想知道预期的行为是什么。当我已经请求了适当的权限时遇到CORS问题很令人沮丧...但我也可以理解我正在尝试从chrome-extension之外的来源访问"http://www.bar.com/123"...虽然是加载到扩展中我有权限访问的iframe中。
任何人对此有什么想法吗? 编辑:如果你想知道我从实际角度在做什么——我想注入一些javascript,可以在注入页面上调用getImageData。然而,我不能这样做,因为getImageData认为视频的src是污染数据。我已经请求了适当的权限,但它并没有传递到iframe中。 更新:这是一张图片:http://i.imgur.com/PR48HO2.png
所以,我有一个扩展程序。在它的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();
现在,我在Chrome扩展程序的页面中添加了一个iframe。它看起来像这样:
<iframe src="http://www.foo.com/123"></iframe>
这个框架的src与我的内容脚本模式匹配。因此,当框架加载时,injectedScript.js会被注入其中。但是,在injectedScript内部的XMLHttpRequest失败了。 现在,这让我想知道预期的行为是什么。当我已经请求了适当的权限时遇到CORS问题很令人沮丧...但我也可以理解我正在尝试从chrome-extension之外的来源访问"http://www.bar.com/123"...虽然是加载到扩展中我有权限访问的iframe中。
任何人对此有什么想法吗? 编辑:如果你想知道我从实际角度在做什么——我想注入一些javascript,可以在注入页面上调用getImageData。然而,我不能这样做,因为getImageData认为视频的src是污染数据。我已经请求了适当的权限,但它并没有传递到iframe中。 更新:这是一张图片:http://i.imgur.com/PR48HO2.png