使用Firefox插件进行跨域通信

9

Firefox插件 允许您进行跨域通信

是否有一种方法可以公开此函数,以便我可以从任何页面启动跨域ajax(假设我已经安装了此插件)?

编辑: 我知道什么是CORS,但只有当您控制服务器时,CORS才有意义,但我没有。这里的重点是我控制浏览器,我承担风险,因此我想知道是否有任何方法可以从插件阶段导出跨域函数到用户界面。


你应该看一下CORS(参见Bart的回答)- 允许任何网页进行跨域请求而不进行任何检查将是一个巨大的安全漏洞。 - Wladimir Palant
CORS 只有在您控制服务器时才有意义,但我没有这个权限。这里的重点是我控制浏览器,我承担风险,所以我想知道是否有办法将跨域功能从附加组件平台导出到用户空间。 - Howard
你的意思是像Greasemonkey那样吗? - Yansky
5个回答

5
正如你所说,同源策略只是保护客户端(即您自己),通常是免受XSS攻击的影响。
我不确定您尝试使用插件实现什么目的,但您可以在自己的计算机上更改Firefox的设置以忽略同源策略,然后尝试执行以下操作
如果您要开发一个允许跨域访问(从而可能打开客户端漏洞)的插件,则可能需要采用一些非正统的技巧。 我可以想到几种方法,但与CORS类似,您至少需要访问某些服务器。 您可以创建一个代理,代理在您的服务器上获取资源。 也就是说,您的插件用户访问http://yourwebsite.com/?url=http://someotherwebsite.com/resource
我想不出任何只能在客户端解决的方案。

1
我想不出一个只在客户端实现的解决方案。至少对于Chrome有解决方案,可以参考这个链接:http://stackoverflow.com/questions/15002408/enable-xss-in-chrome-and-or-safari。我仍在苦苦寻找Firefox的等效方法... - spinkus
在Firefox 40中,我找到了解决方案,对我有效。https://dev59.com/r2Qn5IYBdhLWcg3wIUBn#18495435 - spinkus

2
跨域通信(Cross Origin Resource Share,CORS)只有在服务器允许并且浏览器支持的情况下才可能实现。
这篇维基百科文章易于阅读。
这份W3C文件则需要更深入的阅读,它仍然是一个工作草案。
我已经在C# Webserver中使用CORS一年了。我发现,如果在服务器端没有添加CORS头,则会遇到“同源策略”的问题,即使请求的IP地址相同但端口不同也是如此。
如果服务器不支持CORS,则可能会发现您的跨域请求失败。
编辑:
我最近学到,可以使用Yahoo! Query Language (YQL)绕过同域策略。有关更多信息,请参见链接。
查看此SO条目以获取一个示例:使用jquery进行跨域Post方法ajax调用,带有xml响应

1

0

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


-1

1
OP表示他没有访问服务器的权限。 - bart s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接