Firefox设置启用跨域Ajax请求

我需要临时允许跨域XMLHttpRequest。 改变Firefox的安全设置似乎是要走的路。 但我已经尝试过这个 ,但他们没有工作。 有没有人能够configuration之前呢? 谢谢。

对于现代浏览器,您可以尝试以下方法:

https://developer.mozilla.org/en/HTTP_access_control

简而言之,您需要将以下内容添加到SERVER响应头(以下允许 foo.example访问):

 Access-Control-Allow-Origin: http://foo.example Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER Access-Control-Max-Age: 1728000 

请注意, X-PINGOTHER是JavaScript插入的自定义标题,并且应该因站点而异。

如果您希望任何站点在Ajax中访问您的服务器,请使用*代替。


编辑:

当我在2009年第一次回答这个问题的时候,我遇到了同样的问题,我使用服务器端configuration来解决这个问题。

那时FF或Chrome上没有插件。

但是,现在我们有使用浏览器端插件的替代scheme,请检查tsds的答案

如果您只是不想在开发和testing应用程序的过程中浪费时间解决跨域问题,则可以使用插件Force CORS for FF。

更新:看来,这个插件不再存在。 但是还有另外一个select – 这个Chrome扩展

你有没有尝试过使用jQuery的ajax请求? 从版本1.3开始,jQuery支持某些types的跨域ajax请求。

引用上面的引用:

注意:当'script'或'jsonp'是数据types(因为它使用DOM脚本标签加载脚本)时,所有远程(不在同一域)的请求应该被指定为GET。 需要XMLHttpRequest对象的Ajax选项不适用于这些请求。 完成和成功函数在完成时调用,但不会收到XHR对象; beforeSend和dataFilter函数不被调用。

从jQuery 1.2开始,如果您指定了一个JSONPcallback函数,您可以加载位于另一个域中的JSON数据,可以这样做:“myurl?callback =?”。 jQuery自动replace? 用正确的方法名称调用,调用你指定的callback。 或者,如果将dataType设置为“jsonp”,则callback将自动添加到您的Ajax请求中。

这是事情,没有办法“暂时”禁用跨域XMLHttpRequest,如果你可以暂时禁用它,那么它可以被永久禁用。 这在现代AJAX编程中是一个相当普遍的问题,并且通常使用称为跨域脚本的技术来解决。

这里的想法是,如果你呼叫一个跨域脚本,它会返回JavaScript(JSON)结果,然后传递给你的一个函数。

以下是一些示例代码,用于说明从JavaScript代码angular度看它的样子:

  function request_some_data() { var s = "http://my.document.url.com/my_data?p1=v1&p2=v2&callback=myfunc"; try { try{ document.write("<scr"+"ipt type='text/javascript' src='"+s+"'></scr"+"ipt>"); } catch(e){ var x = document.createElement("script"); x.src = s; document.getElementsByTagName("head")[0].appendChild(x); } } catch (e) { alert(e.message); } } 

然后你将在接收数据的代码中定义一个函数,并在服务器中“处理”callback函数,这里是客户端JavaScript:

 function myfunc(data) { alert(data); } 

在服务器端,在这里我给出了一个PHP示例,但是这可以用Java或者您的服务器端技术轻松完成:

 <?php if($_GET["callback"]) { print($_GET["callback"] . "("); } /* place your JSON object code/logic here */ if($_GET["callback"]) { print(");"); } ?> 

请注意,您在服务器端生成的是一些在客户端执行的JavaScript。

我已经尝试使用“UniversalBrowswerRead”的东西,它没有工作。 你可能可以添加一个“允许”标题,但是我还没有尝试过。 这是非常新的。

你可以在这里find更多的信息

我正从file://面对这个问题。 我想从本地HTML文件(testing平台)向两台服务器发送查询。

这个特殊情况不应该是任何安全问题,但只有Safari允许这样做。

这是我发现的最好的讨论 。

那么使用类似mod_proxy的东西呢? 然后它看起来像你的浏览器的请求是去同一台服务器,但他们真的被转发到另一台服务器。

我用小提琴作为代理。 提琴手将本地主机呼叫redirect到外部服务器。

我将Firefoxconfiguration为使用手动代理(127.0.0.1端口8888)。 Fiddler通过使用URLfilter捕获调用并将其redirect到另一个服务器。

要允许跨域:

  1. inputabout:config
  2. 接受要小心
  3. 在search栏中inputsecurity.fileuri.strict_origin_policy
  4. 改为假

您现在可以closures该选项卡。 通常,您现在可以使用此configuration进行跨域请求。

在这里看到更多的细节。

手动编辑Firefox的设置是一个很好的select,但是如果你经常需要这样做的话,这是不方便的。

相反,您可以安装一个附件,只需点击一下即可完成。

CORS everywhereCORS everywhere ,这对我很好。

这是一个链接到安装程序