【问题标题】:AJAX request denied on FIREFOX but not on IEAJAX 请求在 Firefox 上被拒绝,但在 IE 上没有
【发布时间】:2009-04-06 12:35:20
【问题描述】:

我需要发出一个 ajax 请求,IE 工作正常,Firefox URI DENIED。

我google了一下,发现唯一的办法就是使用JSON来消除和限制。

有人有例子吗?

谢谢

【问题讨论】:

  • 您的 URI 与出现代码的页面是否指向同一服务器?

标签: javascript ajax json


【解决方案1】:

jQuery 可能看起来像这样:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?" +
          "tags=cat&tagmode=any&format=json&jsoncallback=?",
    function(data){
      $.each(data.items, function(i,item){
        $("<img/>").attr("src", item.media.m).appendTo("#images");
        if ( i == 3 ) return false;
      });
    });

【讨论】:

  • 你确定这行得通吗?因为我相信这不会是由于同源政策的限制。
  • 它会起作用,因为这是一个 jsonp 请求,你知道这一点是因为你看到了 ?在网址中。有关更多信息,请参阅 jquery 的 jsonp 文档。
【解决方案2】:

或者,您可以让您的 XMLHttpRequest 将您的用户代理指定为 IE(浏览器嗅探是愚蠢的):

var req = new XMLHttpRequest();
req.setRequestHeader('User-Agent','MSIE 7.0');
req.open("GET", sURL, true);
req.onreadystatechange=function() {
    if (req.readyState==4) {
        alert(req.responseText);
    }
}
req.send(null);

或者更好的是,向站点管理员发送一封措辞强硬的电子邮件,说明他们不接受来自非 IE 浏览器的请求。在这个时代,建立一个仅限 IE 的网站是不可接受的。它在很多方面破坏了网络的可访问性和实用性。

【讨论】:

    【解决方案3】:

    在深入之前,请尝试在请求中使用绝对 url。 我所知道的 IE 和 FIrefox 之间唯一适用的区别是 IE 在 http 流量中将相对 url 转换为绝对。

    【讨论】:

      【解决方案4】:

      您始终可以使用服务器端代理。

      【讨论】:

        【解决方案5】:

        如果这是一个跨站点问题(我认为不是),请尝试为您的站点(例如 flickrapi.acme.com)设置一个子域,它是 api.flickr.com 的 CNAME。

        【讨论】:

          猜你喜欢
          • 2011-06-13
          • 2013-11-14
          • 2017-01-14
          • 2014-06-03
          • 2012-02-27
          • 2016-10-11
          • 2017-08-15
          • 1970-01-01
          • 2015-01-10
          相关资源
          最近更新 更多