Javascript 使用浏览器插件规避同源策略
我最近读到“同源策略”不适用于浏览器插件 我想创建一个项目,用户可以通过iframes使用Gmail、Facebook、Twitter等web服务 简单地使用iframe是不可能的,因为这些站点上都有相同的源策略标题,但我正在尝试找出是否有办法做到这一点,如果我的浏览器插件将被安装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命令行在桌面上启动它。
如果有人能提出任何想法,我将不胜感激。如果您选择桌面应用程序,您可以避免浏览器跨源限制,并且仍然可以编写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()应该能够