Javascript 启用跨域Ajax请求的Firefox设置
我需要暂时允许跨域XMLHttpRequest。改变firefox的安全设置似乎是一条出路。但是我试过了,但是没有用。以前有人能配置这个吗?谢谢。您是否尝试过使用jQuery的请求?从1.3版开始,jQuery支持某些类型的跨域ajax请求 引用上述参考资料: 注意:所有远程设备(不在同一台计算机上 应指定域)请求 当“script”或“jsonp”是 数据类型(因为它加载脚本 使用DOM脚本标记)。Ajax选项 需要XMLHttpRequest对象的 不可用于这些请求。 完整和成功的功能是 要求完成,但不要求完成 接收一个XHR对象;发送前的 而数据过滤器函数则不是 打电话来 从jQuery1.2开始,您可以加载JSON 位于另一个域上的数据,如果 指定一个JSONP回调,该回调可以是 这样做:“myurl?回调=?”。 jQuery自动替换? 使用要调用的正确方法名称, 调用指定的回调函数。或 如果将数据类型设置为“jsonp”a 将自动添加回调 根据您的Ajax请求Javascript 启用跨域Ajax请求的Firefox设置,javascript,http,xmlhttprequest,Javascript,Http,Xmlhttprequest,我需要暂时允许跨域XMLHttpRequest。改变firefox的安全设置似乎是一条出路。但是我试过了,但是没有用。以前有人能配置这个吗?谢谢。您是否尝试过使用jQuery的请求?从1.3版开始,jQuery支持某些类型的跨域ajax请求 引用上述参考资料: 注意:所有远程设备(不在同一台计算机上 应指定域)请求 当“script”或“jsonp”是 数据类型(因为它加载脚本 使用DOM脚本标记)。Ajax选项 需要XMLHttpRequest对象的 不可用于这些请求。 完整和成功的功能是 要
我也尝试过使用“UniversalBrowsRead”的东西,但没有效果。您可能可以添加一个“允许”标题,但我还没有真正尝试过这样做。它很新
您可以找到更多信息使用mod_proxy之类的工具怎么样?然后,在浏览器看来,请求似乎要发送到同一台服务器,但它们实际上是被转发到另一台服务器。问题是,无法“临时”禁用跨域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);
}
}
在服务器端,这里我给出了一个PHP示例,但在Java或任何服务器端技术中都可以轻松实现:
<?php
if($_GET["callback"]) {
print($_GET["callback"] . "(");
}
/* place your JSON object code/logic here */
if($_GET["callback"]) {
print(");");
}
?>
请注意,您在服务器端生成的最终是一些在客户端执行的JavaScript。对于现代浏览器,您可以尝试以下方法: 简言之,您需要将以下内容添加到
服务器
响应头中(以下内容允许从foo.示例
):
访问控制允许原点:http://foo.example
访问控制允许方法:POST、GET、OPTIONS
访问控制允许标头:X-PINGOTHER
访问控制最大年龄:1728000
请注意,X-PINGOTHER
是由JavaScript插入的自定义标题,不同站点的标题应该有所不同
如果希望任何站点使用Ajax访问服务器,请改用*
编辑: 当我在2009年第一次回答这个问题时,我实际上遇到了同样的问题,我使用服务器端配置解决了这个问题 当时FF或Chrome上还没有插件
但是,现在我们确实有了使用浏览器端插件的替代方案,请检查
tsds的答案我在文件中面对这个问题://
。我想从一个本地HTML文件(一个测试台)向两个服务器发送查询
这种特殊情况不应该是任何安全问题,但只有Safari允许这样做
这是我发现的问题的答案。我使用Fiddler作为代理。将本地主机调用重定向到外部服务器
我将Firefox配置为使用手动代理(127.0.0.1端口8888)。Fiddler通过使用URL过滤器捕获呼叫并将其重定向到另一台服务器。如果您不想在应用程序开发和测试期间在跨域问题上浪费时间,您可以使用addon for FF
更新:这个插件似乎已经不存在了。但是还有另一个选择-手动编辑firefox的设置是一个不错的选择,但是当你需要经常这样做的时候就不方便了
相反,您可以安装一个插件,只需单击一下即可完成此操作
我在任何地方都使用CORS
,这对我来说非常有用
以下是允许跨域的:
输入about:config
接受谨慎
在搜索栏中输入security.fileuri.strict\u origin\u policy
变为false
现在可以关闭选项卡。通常,您现在可以使用此配置发出跨域请求
有关更多详细信息,请参阅。您可以查看我的firefox插件。它允许在最新的firefox版本中跨域:我们使用它来检索json数据,但这是html,它被合并到页面中,并且只是暂时的,所以更改firefox配置应该是最简单的事情,以避免向下投票?使用框架的跨域功能是对这个问题的合理回答。问题中没有提到需要HTML,只是在对我的回复的评论中提到。如果你可以要求更改Firefox安全设置,你不能使用GreaseMonkey脚本吗?在Chrome上试用:试用我的Firefox加载项以启用ajax跨域:“当然,您可以暂时禁用它。例如,用--disable-web-security启动Chrome。@JosephLust请注意,这是在Chrom广泛使用之前提出/回答的。谢谢!我想我不会再在Chrome上测试了。Forcecors很棒。值得一提的是,安装后,您必须单击view=>Toolbar=>add-on bar。然后cors按钮将显示在右下角,单击该按钮以启用它。我解开了xpi的拉链,然后
<?php
if($_GET["callback"]) {
print($_GET["callback"] . "(");
}
/* place your JSON object code/logic here */
if($_GET["callback"]) {
print(");");
}
?>