Настройки безопасности IE 8 запрещают JavaScript отправлять xmlHTTPRequest - PullRequest
2 голосов
/ 01 ноября 2011

Я сталкиваюсь с проблемой, что всякий раз, когда я отключаю настройки безопасности в IE8, в моем приложении вызов xmlHTTPRequest завершается неудачно. Однако, когда я его включаю, он работает нормально.Функция безопасности: Инструменты -> Свойства обозревателя -> Дополнительно -> Безопасность -> Включить собственную поддержку 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);
    }  

1 Ответ

2 голосов
/ 01 ноября 2011

Взгляните на эту статью о нативном XMLHTTP на MSDN. Это также обеспечивает решение вашей проблемы.

Редактировать Извините, я недостаточно внимательно прочитал статью ... Этот ответит на ваш вопрос. Вам нужно будет попытаться создать экземпляр объекта XMLHttpRequest.

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