Javascript 启用跨域Ajax请求的Firefox设置

Javascript 启用跨域Ajax请求的Firefox设置,javascript,http,xmlhttprequest,Javascript,Http,Xmlhttprequest,我需要暂时允许跨域XMLHttpRequest。改变firefox的安全设置似乎是一条出路。但是我试过了,但是没有用。以前有人能配置这个吗?谢谢。您是否尝试过使用jQuery的请求?从1.3版开始,jQuery支持某些类型的跨域ajax请求 引用上述参考资料: 注意:所有远程设备(不在同一台计算机上 应指定域)请求 当“script”或“jsonp”是 数据类型(因为它加载脚本 使用DOM脚本标记)。Ajax选项 需要XMLHttpRequest对象的 不可用于这些请求。 完整和成功的功能是 要

我需要暂时允许跨域XMLHttpRequest。改变firefox的安全设置似乎是一条出路。但是我试过了,但是没有用。以前有人能配置这个吗?谢谢。

您是否尝试过使用jQuery的请求?从1.3版开始,jQuery支持某些类型的跨域ajax请求

引用上述参考资料:

注意:所有远程设备(不在同一台计算机上 应指定域)请求 当“script”或“jsonp”是 数据类型(因为它加载脚本 使用DOM脚本标记)。Ajax选项 需要XMLHttpRequest对象的 不可用于这些请求。 完整和成功的功能是 要求完成,但不要求完成 接收一个XHR对象;发送前的 而数据过滤器函数则不是 打电话来

从jQuery1.2开始,您可以加载JSON 位于另一个域上的数据,如果 指定一个JSONP回调,该回调可以是 这样做:“myurl?回调=?”。 jQuery自动替换? 使用要调用的正确方法名称, 调用指定的回调函数。或 如果将数据类型设置为“jsonp”a 将自动添加回调 根据您的Ajax请求


我也尝试过使用“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(");");
       }
     ?>