我需要 暂时地 允许跨域 XMLHttpRequest。更改 Firefox 安全设置似乎是可行的方法。但我尝试过 但他们没有工作。以前有人能够配置这个吗?谢谢。

有帮助吗?

解决方案

有关现代的浏览器,你可以试试下面的办法:

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的答案

其他提示

如果你只是不想开发和测试您的应用程序,你可以使用插件的力CORS 了解FF。

更新:看来,这个插件不再存在。但还有另一种选择 - 这 Chrome扩展

您是否尝试过使用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过滤器。

允许跨域:

  1. 进入 about:config
  2. 接受要小心
  3. 进入 security.fileuri.strict_origin_policy 在搜索栏中
  4. 更改为假

您现在可以关闭该选项卡。通常,您现在可以使用此配置发出跨域请求。

这里 更多细节。

您可以检查出我的外接对Firefox。它允许跨域在最新的版Firefox:的https: //addons.mozilla.org/en-US/firefox/addon/cross-domain-cors/

手动编辑Firefox的设置是要走的路,但是当你需要经常这样做它的不方便。

相反,你可以在外接的是安装一个会为你做它在一次点击。

我用CORS everywhere,这对我的伟大工程。

下面是链接到安装

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top