【问题标题】:Cross-domain communication using a Firefox addon使用 Firefox 插件进行跨域通信
【发布时间】:2012-06-25 10:34:44
【问题描述】:

Firefox 插件allow you to do cross-domain communication.

有没有办法公开这个功能,以便我可以从任何页面启动跨域 ajax(假设我已经安装了这个插件)?

编辑: 我知道什么是 CORS,只有当您控制服务器时,CORS 才有意义,但我不知道。这里的重点是我控制浏览器,我承担风险,所以我问是否无论如何要将跨域功能从插件阶段导出到用户区。

【问题讨论】:

  • 您应该更愿意查看 CORS(请参阅 bart 的回答) - 允许任何网页在没有任何检查的情况下进行跨域请求将是一个巨大的安全漏洞。
  • CORS 仅在您控制服务器时才有意义,但我没有。这里的重点是我控制浏览器,我承担风险,所以我问是否无论如何要将跨域功能从插件平台导出到用户区。
  • 你的意思是像greasemonkey是怎么做的吗?

标签: javascript firefox firefox-addon cross-domain security


【解决方案1】:

只有在服务器允许并且浏览器支持的情况下,才可以进行跨域通信,即 CORS(跨源资源共享)。

在这篇Wikipedia 文章中轻松阅读

大量阅读此W3C 文档,该文档仍是工作草案。

我现在在C# Webserver 中使用 CORS 一年了。我注意到每当我不在服务器端添加 CORS 标头时,我都会遇到same origin policy。即使请求相同的 IP 地址但不同的端口。

如果服务器不支持 CORS,你可能会发现你的跨域请求失败

编辑:

我最近了解到可以使用Yahoo! Query Language (YQL) 解决相同的域策略。有关详细信息,请参阅链接。

请参阅此 SO 项目以获取示例 Cross Domain Post method ajax call using jquery with xml response

【讨论】:

    【解决方案2】:

    正如您所说,同源策略仅用于保护客户端(您自己),通常免受 XSS 攻击。

    我不确定你想用插件实现什么,但你当然可以try doing the following on your own machine。通过更改Firefox上的设置,您可以忽略同源策略。

    如果您正在尝试开发一个允许跨域访问的插件(因此可能会在您的客户端中打开漏洞),您可能需要使用一些非正统的技巧。我可以想到几种方法,但是像 CORS 一样,您至少需要访问某些服务器。您实际上可以创建一个代理来获取服务器上的资源。即,您插件的用户点击http://yourwebsite.com/?url=http://someotherwebsite.com/resource

    我想不出只有客户端的解决方案。

    【讨论】:

    【解决方案3】:

    您也许可以使用这个 gem:https://github.com/progrium/localtunnel

    【讨论】:

      【解决方案4】:

      你可以访问其他服务器吗? 如果您有访问权限,JSONP 通常是个好主意。

      http://en.wikipedia.org/wiki/JSONP

      【讨论】:

      • OP 声明他无权访问服务器。
      【解决方案5】:

      Userscripts具有跨域XMLHttpRequest,甚至可以在所有浏览器上运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-29
        • 2014-05-07
        • 2022-10-01
        • 2011-02-21
        • 2012-01-28
        • 2011-12-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多