Internet Explorer中允许的Ajax跨域请求

时间:2013-09-06 17:24:22

标签: ajax http-headers cross-domain cors

我被要求创建一个可以从其他网站请求的反馈页面。

我正在使用渐进式增强功能来显示页面。

当我能够使用jquery对话框时的ajax请求如下

    jQuery.support.cors = true;
    $.ajax({
        type: 'get',
        crossDomain: true,
        url: this.href
    }).done(function (data) {
        $dialogFeedback.html(data);
    }).error(function (jqXHR, textStatus, errorThrown) {
        $dialogFeedback.html(jqXHR.responseText || textStatus);
    });

在测试期间,我注意到Internet Explorer似乎允许跨域调用,即使响应Access-Control-Allow-Origin HttpHeader 设置为客户端域。我注意到Http origin头始终为null。

Chrome和Firefox尊重它。 Http origin头不是null。

进行呼叫的客户端站点位于反馈站点的不同端口,但都是localhost。我已经读过一个不同的端口号 被认为是跨域。

目前,我发现自己必须从Referrer Http标头中检索调用方/客户端域,如果我们不知道域名,则返回404.

我真的希望依赖Access-Control-Allow-Origin HttpHeader!

。 。 。所以我的问题是为什么会发生这种情况?它实际上是预期的/可能的吗?什么是最好的解决方案?

由于

1 个答案:

答案 0 :(得分:0)

如果缺少原始标头,则根据IE,请求不是跨域的。 IE以多种方式违反了同源政策RFC。首先,它忽略了端口号。其次,IE将允许受信任区域中的域进行交互,而不应用相同的源策略