Подтвердить что ты не робот

XDomainRequest в IE дает отказ в доступе

Это код, который я использую, выглядит следующим образом:

Я использую IE9 и не могу видеть, что запрос отправляется на вкладке Сеть. У меня есть заголовки Access-Control, установленные в JSP как:

<% response.setHeader("Access-Control-Allow-Origin", "*");%>

Код для получения содержимого AJAX HTML из JSP:

if ($.browser.msie && window.XDomainRequest) {

    var xdr = new window.XDomainRequest();
    xdr.open("GET", "http://dev01.org:11110/crs/qw/qw.jsp?&_=" + Math.random());
    xdr.contentType = "text/plain";
    xdr.timeout = 5000;
    xdr.onerror = function () {
        console.log('we have an error!');
    }
    xdr.onprogress = function () {
        console.log('this sucks!');
    };
    xdr.ontimeout = function () {
        console.log('it timed out!');
    };
    xdr.onopen = function () {
        console.log('we open the xdomainrequest');
    };
    xdr.onload = function() {
        alert(xdr.responseText);
    };
    xdr.send(null);
} else { ...... }

Я получаю сообщение об отказе в доступе. Любая помощь будет высоко оценена!

4b9b3361

Ответ 1

Запросы должны быть нацелены на ту же схему, что и на странице хостинга

В вашем примере вы делаете запрос:

http://dev01 ...

И вы должны сделать это из протокола HTTP.

Например: Если ваш сайт, где находится js script: http://dev.org Вы можете сделать это:

xhr = new XDomainRequest();
xhr.open("GET", "http://dev01.org?p=1");

но это вызывает "Доступ запрещен":

xhr = new XDomainRequest();
xhr.open("GET", "https://dev01.org?p=1");

Ответ 2

Мой опыт с XDomainRequest заключается в том, что он не уважает Access-Control-Allow-Origin: *. Вместо этого вы должны указать домен. Это можно получить из заголовка HTTP_REFERER, если вам нужно динамически генерировать его, или если вы только ожидаете запросы из одного домена, вы можете установить его вручную. Эта статья может помочь.

<% response.setHeader("Access-Control-Allow-Origin", "http://dev01.org");%>