Javascript 使用浏览器插件规避同源策略

Javascript 使用浏览器插件规避同源策略,javascript,iframe,google-chrome-extension,same-origin-policy,browser-plugin,Javascript,Iframe,Google Chrome Extension,Same Origin Policy,Browser Plugin,我最近读到“同源策略”不适用于浏览器插件 我想创建一个项目,用户可以通过iframes使用Gmail、Facebook、Twitter等web服务 简单地使用iframe是不可能的,因为这些站点上都有相同的源策略标题,但我正在尝试找出是否有办法做到这一点,如果我的浏览器插件将被安装 如果有人能提出任何想法,我将不胜感激。如果您选择桌面应用程序,您可以避免浏览器跨源限制,并且仍然可以编写HTML5 javascript 基本上,您可以创建一个网页应用程序,并使用node.js命令行在桌面上启动它。

我最近读到“同源策略”不适用于浏览器插件

我想创建一个项目,用户可以通过iframes使用Gmail、Facebook、Twitter等web服务

简单地使用iframe是不可能的,因为这些站点上都有相同的源策略标题,但我正在尝试找出是否有办法做到这一点,如果我的浏览器插件将被安装


如果有人能提出任何想法,我将不胜感激。

如果您选择桌面应用程序,您可以避免浏览器跨源限制,并且仍然可以编写HTML5 javascript

基本上,您可以创建一个网页应用程序,并使用node.js命令行在桌面上启动它。然后,它可以从您喜欢的任何url读取和操作数据

以下是关于如何开始的教程:

如果您使用桌面应用程序,您可以避免浏览器跨源限制,仍然可以编写HTML5 javascript

基本上,您可以创建一个网页应用程序,并使用node.js命令行在桌面上启动它。然后,它可以从您喜欢的任何url读取和操作数据

以下是关于如何开始的教程:

据我所知,虽然不能使用iFrame,但chrome扩展允许您从任何域获取html,只要域在您的权限范围内,就可以显示它

i、 e.在
manifest.json
中的
“权限”数组中,将条目添加为字符串(
)http://www.facebook.com“


您应该能够从那里以编程方式呈现包含您喜欢的内容的页面

据我所知,虽然不能使用iFrames,但是chrome extensions允许您从任何域获取html,只要域在您的权限范围内,就可以显示它

i、 e.在
manifest.json
中的
“权限”数组中,将条目添加为字符串(
)http://www.facebook.com“


您应该能够从那里以编程方式呈现包含您喜欢的内容的页面

你的问题相当广泛,但让我们假设你在一个页面上有3个iFrame,twitter facebook和gmail,为了便于辩论,你需要一条新的推文来弹出gmail和facebook中的警报框

我想你有两个(可能有三个)选择。您可以使用
window.postMessage
将消息发布到父窗口,然后让扩展处理父窗口中的消息内容(例如
parent.postMessage(message,“*”);
。请记住,您可以发布对象)

或者,如果我没记错的话,您的另一个解决方案是利用chrome扩展的后台页面功能。().

我认为这个片段似乎与您想做的事情最相关(摘自上面的链接):

您可以使用直接脚本调用在各个页面之间进行通信,类似于框架的通信方式。extension.getViews方法返回属于扩展的每个活动页面的窗口对象列表,extension.getBackgroundPage方法返回背景页面

在我链接的部分下面有一个例子,我不会复制到这里,因为它相当大

实际上,通读了这些之后,对于它是指运行扩展的页面,还是指包含在扩展本身中的页面,这是非常模糊的

还有一个chrome的“消息传递”函数(),它的开头是:

由于内容脚本在网页上下文中运行,而不是在扩展中运行,因此它们通常需要某种方式与扩展的其余部分进行通信


请记住,如果您希望扩展在父窗口以外的任何帧中运行,则需要在manifest.json中指定
“all_frames”:true

您的问题相当广泛,但我们假设您在一个页面上有3个iframes,twitter facebook和gmail,并且为了参数起见,在gmail和facebook上弹出提醒框的新推文

我想你有两个(可能有三个)选择。您可以使用
window.postMessage
将消息发布到父窗口,然后让扩展处理父窗口中的消息内容(例如
parent.postMessage(message,“*”);
。请记住,您可以发布对象)

或者,如果我没记错的话,您的另一个解决方案是利用chrome扩展的后台页面功能。().

我认为这个片段似乎与您想做的事情最相关(摘自上面的链接):

您可以使用直接脚本调用在各个页面之间进行通信,类似于框架的通信方式。extension.getViews方法返回属于扩展的每个活动页面的窗口对象列表,extension.getBackgroundPage方法返回背景页面

在我链接的部分下面有一个例子,我不会复制到这里,因为它相当大

实际上,通读了这些之后,对于它是指运行扩展的页面,还是指包含在扩展本身中的页面,这是非常模糊的

还有一个chrome的“消息传递”函数(),它的开头是:

由于内容脚本在网页上下文中运行,而不是在扩展中运行,因此它们通常需要某种方式与扩展的其余部分进行通信

请记住,如果希望扩展在父窗口以外的任何帧中运行,则需要在manifest.json中指定
“all_frames”:true

webview()应该能够实现您想要做的一切

这包括“insertCSS”和“executeScript”等方法。唯一需要的权限是“webview”

webview()应该能够