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

时间:2011-11-01 09:18:30

标签: javascript security internet-explorer-8 xmlhttprequest

我遇到的问题是,每当我关闭IE8中的安全设置时,在我的应用程序中,xmlHTTPRequest调用失败。但是当我打开它时,它的工作正常。 安全功能是:工具 - >互联网选项 - >进展 - >安全 - >启用本机xmlHTTP支持。 如果检查它然后没有问题,但如果没有检查,xmlHTTPReq无法向服务器发送请求。(我没有在调试器窗口中看到cgi调用)。

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

我的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);
    }  

1 个答案:

答案 0 :(得分:2)

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

修改 对不起,我没有仔细阅读这篇文章...... This我会回答你的问题。如果可以创建XMLHttpRequest对象的实例,则必须尝试。

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