javascript - IE 8 安全设置阻止 javascript 发送 xmlHTTPRequest

标签 javascript security internet-explorer-8 xmlhttprequest

我遇到的问题是,每当我关闭 IE8 中的安全设置时,在我的应用程序中,xmlHTTPRequest 调用都会失败。但是当我打开它时,它工作正常。 安全功能是:工具 -> Internet 选项 -> 高级 -> 安全 -> 启用 native xmlHTTP 支持。 如果选中则不会出现问题,但如果未选中,xmlHTTPReq 将无法向服务器发送请求。(我在调试器窗口中看不到 cgi 调用)。

所以我的问题是:是否可以使用 JavaScript 以编程方式检测此安全设置是否已启用?

我的 cgi 调用代码如下:

try{
        var xmlHttpReq;
        var destinationURL = cgiBinPath+"helloworld.cgi?start";
        // IE 7+, Mozilla/Safari
        if (window.XMLHttpRequest) {
            xmlHttpReq=new XMLHttpRequest();
        }
        //IE 5,6
        else {
            xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
        }
        if (xmlHttpReq.readyState == 0){
            xmlHttpReq.open('GET', destinationURL, true);
            xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xmlHttpReq.onreadystatechange = function(){
                if(xmlHttpReq.readyState == 4){
                  //Control never reaches here
                }
            }               
            xmlHttpReq.send();
        }
    }catch(e){
        alert('Exception '+e);
    }  

最佳答案

看看this MSDN 上有关 native XMLHTTP 的文章。它还为您的问题提供了解决方案。

编辑 对不起,我没有足够仔细地阅读文章... This一个会回答你的问题。您将不得不尝试是否可以创建 XMLHttpRequest 对象的实例。

if (window.XMLHttpRequest) {
    try {
        xmlHttpReq = new XMLHttpRequest();
    } catch (ex) {
        xmlHttpReq = new window.ActiveXObject("Microsoft.XMLHTTP");
    }
} else {
    //...
}

关于javascript - IE 8 安全设置阻止 javascript 发送 xmlHTTPRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7964478/

相关文章:

Javascript 特征检测 CMYK 图像

javascript - mongodb mongo从外部文件动态导入

javascript - 火力基地。授予客户端直接写入服务器上数据库的访问权限是否安全?

javascript - 持久性 XSS 和非持久性 XSS 之间的主要区别和定义

javascript - 在 IE8 中遍历 DOM 中断的递归 JavaScript 函数

javascript - 使 IE8 与 EaselJS 和 ExplorerCanvas 兼容

javascript - 页面加载时选中的复选框

Javascript 千位分隔符/字符串格式

JavaScript XMLHttpRequest 语法错误

security - 在 Grails 中跨多个插件共享身份验证