使用Firefox插件进行跨域通信

时间:2012-06-23 07:58:53

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

Firefox插件allow you to do cross-domain communication

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

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

5 个答案:

答案 0 :(得分:5)

正如您所说,相同的原始策略仅用于保护客户端(您自己),通常来自XSS攻击。

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

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

我认为没办法只做客户端解决方案。

答案 1 :(得分:2)

跨域通信又称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 :(得分:1)

您可以使用此gem:https://github.com/progrium/localtunnel

答案 3 :(得分:0)

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

答案 4 :(得分:-1)

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

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