不能从 Internet Explorer 11 (CORS) 使用跨域 ASMX Web 服务



>我有一个ASMX Web服务,我可以从jQuery$ajax使用它:我可以从Chrome上使用它,但不能从Internet Explorer 11中完成。

我阅读了有关 CORS 限制的信息,并通过将这些行添加到web.config中来禁用它在服务上:

<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Credentials" value="true" />
<add name="Access-Control-Allow-Methods" value="ACL, CANCELUPLOAD, CHECKIN, CHECKOUT, COPY, DELETE, GET, HEAD, LOCK, MKCALENDAR, MKCOL, MOVE, OPTIONS, POST, PROPFIND, PROPPATCH, PUT, REPORT, SEARCH, UNCHECKOUT, UNLOCK, UPDATE, VERSION-CONTROL" />
<add name="Access-Control-Allow-Headers" value="Overwrite, Destination, Content-Type, Depth, User-Agent, Translate, Range, Content-Range, Timeout, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, Location, Lock-Token, If" />
<add name="Access-Control-Expose-Headers" value="DAV, content-length, Allow" />
<add name="Access-Control-Max-Age" value="3600" />

添加配置后,跨域访问开始从谷歌浏览器工作,我可以从网络服务中获得结果。但是Internet Explorer继续遇到同样的问题(该过程将转到ajax调用的错误部分,并显示消息"未定义"(

还选中了 Internet 工具中的 Internet Explorer 选项> 安全> 自定义级别> 杂项> 跨域访问数据源>启用

编辑:这是客户端javascript代码:

function GetSampleText() {
$.ajax({
url: 'http://MyWebServices/MyWebService.asmx/GetSampleText',
type: "POST",
contentType: "application/json; charset=utf-8",
data: '{}',
success: function (result) {
$("#txtResult").val("OK: " + result.d);
},
error: function (request, status, error) {
$("#txtResult").val("ERROR: " + request.responseText);
}
//error: function (result) {
//    $("#txtResult").val("ERROR: " + result.d);
//}
}); 
}

我可以使用以下方法收到不同的消息:

error: function (request, status, error) {
$("#txtResult").val("ERROR: " + request.responseText);
}

我得到:没有运输

我缺少什么才能让它在IE中工作?

对于那些有相同问题的用户,我可以在所有 ajax 调用之前添加以下行来解决它:

$.support.cors = true; // this must precede $.ajax({}) configuration

问候

最新更新