Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE10的CORS和Chrome有什么区别?_Javascript_Jquery_Ajax_Cors - Fatal编程技术网

Javascript IE10的CORS和Chrome有什么区别?

Javascript IE10的CORS和Chrome有什么区别?,javascript,jquery,ajax,cors,Javascript,Jquery,Ajax,Cors,我使用jQuery编写了一个CORS请求,它非常简单: var BJS = {Services: {} }; BJS.Services.GetDatasources = function (data, success, fail) { if (data == null) data = {}; var u = data["user"], p = data["pass"], url = data["url"], ext = data[

我使用jQuery编写了一个CORS请求,它非常简单:

var BJS = {Services: {} };

BJS.Services.GetDatasources = function (data, success, fail) {
    if (data == null) data = {};
    var u = data["user"],
        p = data["pass"],
        url = data["url"],
        ext = data["ext"],
        secure = data["secure"] ? "https://" : "http://",
        up = BJS.Base64.encode(u + ":" + p),
        d = data["data"] ? data["data"] : "";
    $.ajax({
        url: secure + url + ext,
        data: d,
        headers: {
            Authorization: "Basic " + up
        },
        success: success,
        error: fail
    });
};
这个请求在Chrome中非常有效。在IE中,它返回一个错误:

 Error: Access is denied.

     at send (...)
     at ajax (...)
     at GetDatasources (...)
     at eval code (eval code:1:1)
     at Global code (Unknown script code:5:1) 
对我来说,这指向了我相信的$.ajax请求

有没有其他方法可以处理这个ajax请求?是否需要不同的变量

我希望jQuery的$.ajax调用能够从浏览器依赖项中抽象出来,以允许跨浏览器实现更统一的功能,但遗憾的是,这里的情况并非如此

编辑:为了安全起见,我删除了标记,但所有变量实际上都有默认值:例如:

u = data["user"] || "admin";
但我想从外部世界删除哈希、url等

编辑没有人发布任何答案,但我想展示我为好奇的人所做的变通方法,但根本问题仍然没有得到回答

$.support.cors = true
if ($.browser.msie && parseInt($.browser.version, 10) >= 8 && XDomainRequest) {
    //IE
    //using a webservice will remove the cors, and you can just forward the response to the client.
    //it takes up some processing time, but this is the workaround i accomplish.
    $.ajax({url: "webservice.svc"});  //this can be a .php file, or anything really that runs ont he server.

}else{
    //chrome/ff
    //call page as normal.
    $.ajax({url:"resource_file"});
}

服务器返回的CORS头是什么?当我在代码中运行它时,它只是执行错误。监视网络不会显示任何请求。如果我在控制台中执行请求:如果工具>Internet选项>自定义级别>杂项>允许跨原点>启用。这将带来成功。默认情况下,它处于禁用状态,这将返回一个错误。放慢阅读速度:该链接说,即使被禁用,它也应该能够成功工作,但奇怪的是,当按原样运行程序时,它甚至没有将任何内容发布到DevTools的“网络”选项卡上。您不是在兼容模式下运行的,是吗?我希望IE10能够像其他现代浏览器一样处理cors,因为它实现了XHR2。如果它处于兼容模式,您将需要在CORS支持中进行修补,因为jQuery在IES中并不真正支持CORS请求,因为我不知道如何检查,我只是做了:navigator.userAgent,它返回:“Mozilla/5.0”(兼容;MSIE 10.0;Windows NT 6.1;WOW64;Trident/6.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0;.NET4.0C;InfoPath.3;.NET4.0E)”