2012-11-20 10 views
10

Jest to kod używam jest następująco dół poniżej:XDomainRequest w IE daje dostęp jest zabroniony błąd

używam IE9 i jestem w stanie zobaczyć wniosek wysyłany w zakładce Network. Muszę nagłówki kontroli dostępu określone w JSP jako:

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

Kodeksu aby uzyskać zawartość AJAX HTML z 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 { ...... } 

Otrzymuję błąd Odmowa dostępu. Każda pomoc będzie doceniona!

Odpowiedz

1

Wnioski muszą być kierowane do tego samego schematu co strona hostingu

W przykładzie robisz żądania:

http://dev01 ... 

i należy zrobić to z protokołu HTTP.

Na przykład: Jeśli witryna, gdzie skrypt js znajduje się: http://dev.org Można to zrobić:

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

ale ten wyrzuca "Odmowa dostępu":

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

moje doświadczenie z XDomainRequest jest to, że nie respektuje Access-Control-Allow-Origin: *. Zamiast tego musisz podać domenę. Można go uzyskać z nagłówka HTTP_REFERER, jeśli chcesz go dynamicznie wygenerować, lub jeśli oczekujesz tylko żądań z jednej domeny, możesz ustawić go ręcznie. This article might help.

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