【问题标题】:circumvent the same origin policy using a browser plugin使用浏览器插件规避同源策略
【发布时间】:2014-05-29 12:40:52
【问题描述】:

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

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

由于这些网站上的原始策略标头相同,因此不可能仅使用 iframe,但我正在尝试确定是否有办法安装我的浏览器插件。

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

【问题讨论】:

    标签: javascript iframe google-chrome-extension same-origin-policy browser-plugin


    【解决方案1】:

    webview (https://developer.chrome.com/apps/tags/webview) 应该能够实现你想做的一切。

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

    【讨论】:

      【解决方案2】:

      您的问题非常广泛,但我们假设您在一个页面上有 3 个 iframe,twitter facebook 和 gmail,并且为了争论,您想要一条新的推文以在 gmail 和 facebook 中弹出一个警报框。

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

      或者,如果我是正确的,您的其他解决方案是利用 chrome 扩展程序的背景页面功能。 (https://developer.chrome.com/extensions/background_pages#details)。

      我认为这个 sn-p 似乎与您想做的事情最相关(取自上面的链接):

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

      该页面上有一个示例,位于我链接到的部分下方,因为它很大,所以我不会复制到这里。

      实际上,通读后,它是指运行扩展程序的页面,还是扩展程序本身包含的页面,这是非常模棱两可的。

      还有chrome“消息传递”功能(https://developer.chrome.com/extensions/messaging),开头为:

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

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

      【讨论】:

        【解决方案3】:

        虽然您无法使用 iFrame(据我所知),但对于 chrome 扩展,the documentation 将允许您从任何域获取 html 并显示它,只要该域在您的权限内。

        即在"permissions" array 中的manifest.json 中,将条目添加为字符串("http://www.facebook.com")。

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

        【讨论】:

        • 我知道权限问题。为什么使用 iframe 是不可能的?该插件不能用作某种 XHR 请求的代理?有没有其他方法可以让我显示在我的域中呈现的结果(不是小插件显示框)?
        • 您可以通过让扩展程序将其注入到您拥有内容脚本的任何页面中,从而在您的域中显示您想要的任何内容。大多数网络应用程序根本无法在 iframe 中运行,这就是无论 iframe 是在扩展程序还是网页中,它都不应该运行的原因。
        【解决方案4】:

        如果您选择使用Node-Webkit 编写的桌面应用,您可以避免浏览器跨域限制并仍然编写 HTML5 javascript:

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

        这里有一个关于如何开始的教程: http://code.tutsplus.com/tutorials/introduction-to-html5-desktop-apps-with-node-webkit--net-36296

        【讨论】:

        猜你喜欢
        • 2011-06-06
        • 2013-06-27
        • 2013-05-18
        • 2011-05-04
        • 2013-09-08
        • 2012-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多