当前位置:  开发笔记 > 编程语言 > 正文

Firefox设置启用跨域Ajax请求

如何解决《Firefox设置启用跨域Ajax请求》经验,为你挑选了4个好方法。

我需要暂时允许跨域XMLHttpRequest.改变firefox安全设置似乎是要走的路.但我已经试过这个和这个,但他们没有工作.有没有人能够配置这个?谢谢.



1> tsds..:

如果您不想在开发和测试应用程序期间浪费时间在跨域问题上,可以使用插件强制CORS for FF.

更新:似乎这个插件不再存在.但还有另一种选择 - 这个Chrome扩展程序


Forcecors很棒.值得一提的是,安装后你必须点击view => toolbars => add-on bar.然后cors按钮将在右下角显示,以启用它.我解压缩了xpi并看到按下按钮时有一个切换功能,但从未看到按钮.
似乎FF删除了它.
"值得一提的是,安装后你必须点击view => toolbars => add-on bar." 先生,你是个圣徒

2> Walty Yeung..:

对于现代浏览器,您可以尝试以下方法:

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年第一次回答问题时,我实际上遇到了同样的问题,我使用服务器端配置解决了这个问题.

那时FF或Chrome上没有插件.

但是,现在我们确实有使用浏览器端插件的替代方案,请检查答案 tsds


-1它没有回答这个问题.OP要求浏览器端配置
如果我理解正确,如果您无法更改服务器,则无法解决原始问题

3> tvanfosson..:

你尝试过使用jQuery的ajax请求吗?从版本1.3开始,jQuery支持某些类型的跨域ajax请求.

引用上面的参考:

注意:当'script'或'jsonp'是dataType时,所有远程(不在同一域)请求都应指定为GET(因为它使用DOM脚本标记加载脚本).需要XMLHttpRequest对象的Ajax选项不适用于这些请求.完成时调用complete和success函数,但不接收XHR对象; 不调用beforeSend和dataFilter函数.

从jQuery 1.2开始,如果指定了JSONP回调,则可以加载位于另一个域的JSON数据,这可以这样做:"myurl?callback =?".jQuery自动替换?使用正确的方法名称来调用,调用指定的回调.或者,如果将dataType设置为"jsonp",则回调将自动添加到您的Ajax请求中.


为什么选择downvote?使用框架的跨域功能是对此问题的合理回答.问题中没有提到需要HTML的事实,只是在对我的回复的评论中.

4> Michael..:

这就是事情,没有办法"暂时"禁用跨域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("");
        } 
        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中轻松完成,也可以在服务器端技术中实现:


请注意,您在服务器端生成的内容最终会成为在客户端执行的一些JavaScript.


`"当然你可以暂时禁用它.例如,使用--disable-web-security启动Chrome.
推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有