0

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

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

当我能够使用 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 标头始终为空。

Chrome 和 Firefox 尊重它。Http 源头不为空。

进行调用的客户端站点与反馈站点位于不同的端口上,但两者都是本地主机。我读过一个不同的端口号认为是跨域的。

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

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

. . . 所以我的问题是为什么会这样?它实际上是预期/可能的吗?什么是最好的解决方案?

谢谢

4

1 回答 1

0

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

于 2013-09-06T20:33:38.487 回答