我很好奇,如果以下情況是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