Firefox 设置启用跨域 Ajax 请求
-
21-08-2019 - |
解决方案
有关现代的浏览器,你可以试试下面的办法:
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自定义首部,以及应从位点不同到网站。
如果您想要的任何站点访问您的阿贾克斯服务器上,使用*
代替。
编辑:
当我第一次被回答了这个问题的 2009年后,我竟然打了同样的问题,我使用服务器端配置工作围绕它。
有是在FF或Chrome无插件然后通过
不过,现在我们确实有使用浏览器端插件的替代品,请tsds
的答案
其他提示
您是否尝试过使用jQuery的 AJAX请求?作为版本1.3的jQuery支持某些类型的跨域AJAX请求。
从上面的参考引用:
注意:所有的远程(不在同 域)的要求,应符合规定 如GET当“脚本”或“JSONP”是 的数据类型(因为它加载脚本 使用DOM脚本标记)。阿贾克斯选项 需要一个XMLHttpRequest对象 不适用于这些请求。 完整的和成功的功能 叫上完成,但不要 接收XHR对象;该beforeSend 和dataFilter功能都没有 调用。
在jQuery 1.2中,可以加载JSON 位于如果另一个域数据 指定JSONP回调,这可能是 像这样做: “myurl回调=?”。 jQuery将自动替换? 用正确的方法名字来称呼, 调用你指定的回调。要么, 如果将数据类型为“JSONP”一 回调将被自动添加 您的Ajax请求。
下面是一回事,有没有办法“暂时”禁用跨域的XMLHttpRequest,如果你可以禁用它暂时然后它可以永久禁用。这是AJAX编程的现代一个相当普遍的问题,是最经常使用称为跨域脚本的技术解决。
下面是我们的想法是,如果你叫唤它返回JavaScript(JSON)的结果,然后到您的最终功能通过跨域脚本。
下面是一些示例代码来说明它是如何可能看起来从JavaScript代码透视:
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);
}
}
您然后定义代码中的接收数据的功能,在服务器你“处理”回调的情况下,这里是客户端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”事情太多尝试,并没有工作。你也许可以添加一个“让”头,但我并没有真正尝试过这样做呢。这是很新的。
您可以找到更多的信息,这里
我正面临着这个问题 file://
. 。我想从本地 HTML 文件(测试床)向两台服务器发送查询。
这种特殊情况不应该引起任何安全问题,但只有 Safari 允许这样做。
这里是 最佳讨论 我已经发现这个问题了
有关使用类似mod_proxy的是什么?然后,它看起来你的浏览器,如请求是要在同一台服务器,但他们真的被转发到另一台服务器。
我使用的Fiddler作为代理。 的Fiddler 重定向本地主机到外部服务器调用。
我配置火狐使用手动代理(127.0.0.1端口8888)。的Fiddler捕获调用并将其重定向到另一服务器,通过使用URL过滤器。
允许跨域:
- 进入
about:config
- 接受要小心
- 进入
security.fileuri.strict_origin_policy
在搜索栏中 - 更改为假
您现在可以关闭该选项卡。通常,您现在可以使用此配置发出跨域请求。
看 这里 更多细节。
您可以检查出我的外接对Firefox。它允许跨域在最新的版Firefox:的https: //addons.mozilla.org/en-US/firefox/addon/cross-domain-cors/
手动编辑Firefox的设置是要走的路,但是当你需要经常这样做它的不方便。
相反,你可以在外接的是安装一个会为你做它在一次点击。
我用CORS everywhere
,这对我的伟大工程。
下面是链接到安装