我在Chrome扩展中使用内容脚本来访问跨域iframe中的文档,使用此代码:
document.querySelector('iframe').contentWindow.document
这个工作正常,直到我升级到最新版本的Google Chrome(45.0.2454.101 64位),它在访问iframe时报告以下安全错误:
Uncaught SecurityError: Blocked a frame with origin
"http://www.miercn.com" from accessing a frame with origin
"http://pos.baidu.com". Protocols, domains, and ports must match.
这个版本的Chrome有什么变化,如何解决这个问题?
我的Chrome版本:
Google Chrome 45.0.2454.101(齐刷刷)(64cm)3b3c00f2d95c45cca18ab944acced413fb759311-refs/branch-heads/2454@{#502}Mac OS X Blink 537.36(@3b3c00f2d95c45cca18ab944acced413fb759311Mozilla/5.0 (Macintosh;英特尔Mac OS X 10_9_4AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101Safari/537.36/Applications/Google铬。app/Contents/MacOS/Google Chrome -enable-avfoundation——enable-avfoundation——flag-switches-begin——flag-switches-end
您必须通过postMessage使用跨域消息传递。
为了让你在主页上的内容脚本与注入到iframe中的内容脚本进行通信,内容脚本应该注入到所有框架中:
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["content.js"],
"all_frames": true
}],