我被要求创建一个可以从其他网站请求的反馈页面。
我正在使用渐进式增强功能来显示页面。
当我能够使用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!
。 。 。所以我的问题是为什么会发生这种情况?它实际上是预期的/可能的吗?什么是最好的解决方案?
由于
答案 0 :(得分:0)
如果缺少原始标头,则根据IE,请求不是跨域的。 IE以多种方式违反了同源政策RFC。首先,它忽略了端口号。其次,IE将允许受信任区域中的域进行交互,而不应用相同的源策略