1

我有一个小的 ASP.NET 网站,它使用 jQuery 对 Web API Web 服务进行 Ajax 调用(在另一个域上,允许 CORS,标头都已设置)。

我在 Chrome 和 IE10 中都对其进行了测试,在这两种浏览器中,独立站点都运行良好。接下来我要做的就是把网站变成一个 DotNetNuke 模块。这很容易实现,当我使用 Chrome 对其进行测试时,模块可以正常工作并且所有 Ajax 请求都已发出。但是,当我在 IE10 中运行同一页面时,模块发出的每个 Ajax 请求都会返回错误消息“拒绝访问”。

当我查看 Fiddler 时,我注意到 IE 甚至不发出 Ajax 请求。

我知道在 Stackoverflow 上可以找到几个类似的问题,但我觉得他们的情况与我的情况相比有点不同,因为当我在 IE 中运行没有 DotNetNuke 的网站时,Ajax 工作正常。我仍然尝试使用下面的代码发出相同的请求,但我得到了完全相同的错误,就像使用 jQuery Ajax 一样,在 Fiddler 中找不到请求。当我执行 xdr.Open 时,Visual Studio 会引发“拒绝访问”错误。

    if (window.XDomainRequest) {
// Use Microsoft XDR
var xdr = new XDomainRequest();
xdr.open("get", "http://localhost:59390/api/controller/depots");
xdr.onload = function () {
    // XDomainRequest doesn't provide responseXml, so if you need it:
    var dom = new ActiveXObject("Microsoft.XMLDOM");
    dom.async = false;
    dom.loadXML(xdr.responseText);
};
xdr.send();
}

有谁知道这怎么可能以及如何解决?

4

2 回答 2

0

你检查了吗,如果你的 DotNetNuke 站点没有在兼容模式下运行。尝试从 web.config 添加自定义标头,如下所示

<add name="X-UA-Compatible" value="IE=edge" />

于 2013-06-18T12:53:14.170 回答
0

除了将 Web 服务放在与 DNN 站点运行所在的域相同的域上之外,我无法通过任何其他方式解决此问题。然后它按预期工作。但是,如果它不作为 DNN 模块运行,该站点能够使用 CORS ajax 提取数据而在 IE 中没有任何问题,这仍然很奇怪。

于 2013-07-05T16:19:25.973 回答