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到另一个服务器。
要允许跨域:
- input
about:config
- 接受要小心
- 在search栏中input
security.fileuri.strict_origin_policy
- 改为假
您现在可以closures该选项卡。 通常,您现在可以使用此configuration进行跨域请求。
在这里看到更多的细节。
手动编辑Firefox的设置是一个很好的select,但是如果你经常需要这样做的话,这是不方便的。
相反,您可以安装一个附件,只需点击一下即可完成。
我CORS everywhere
用CORS everywhere
,这对我很好。
这是一个链接到安装程序