跨域请求在IE9中工作时应该不是吗?

时间:2014-09-12 18:57:31

标签: jquery xmlhttprequest internet-explorer-9 cors xdomainrequest

我在VS 2010 Web应用程序中定义了一个html文件,如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
        <script src="Scripts/test.js" type="text/javascript"></script>
    </head>
<body>

</body>
</html>

在test.js中,对ASMX Web服务方法的调用非常简单:

$.ajax({
    type: "POST",
    contentType: "application/json",
    dataType: "json",
    url: "http://myremotedomain/MyRemoteResource.asmx/thisMethodReturnsName",
    data: "{'name':'testname'}",
    success: function (msg) {
        alert(msg.d);
    },
    error: function (xhrObj, msg) {
        console.log(msg);
    }
});

当我在Visual Studio中运行此项目并访问Chrome(v35)或Firefox(v25)中的HTML页面时,由于我没有在远程Web服务器上启用CORS,因此我预计会收到跨域错误:

XMLHttpRequest cannot load http://myremotedomain/MyRemoteResource.asmx/thisMethodReturnsName. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:58828' is therefore not allowed access. 

然而,这个ajax调用对我来说在IE9中工作得很好(我得到了正确响应的警告对话框)!这怎么可能?此调用不是对同一台机器上的资源(localhost)进行的。 Web方法托管在完全不同的服务器上。我是否错过了对CORS限制如何在这里工作的某种有趣的解释?

我怀疑这很重要,但是当代码在类似结构的aspx页面(而不是html)中时,我得到相同的结果。我在一个不幸仍然运行IE9的环境中,所以我无法测试,看看我是否在IE10 / IE11中得到了相同的结果。

0 个答案:

没有答案