2012-11-20 60 views
10

這是我使用的代碼如向下跌破如下:我使用IE9,但無法看到網絡選項卡發送的請求XDomainRequest在IE正在給訪問被拒絕錯誤

。我有在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 { ...... } 

我得到一個訪問被拒絕錯誤。任何幫助將非常感激!

回答

1

要求必須有針對性的方案同樣託管頁面

在你的榜樣,你正在做的請求:

http://dev01 ... 

你應該從HTTP協議做到這一點。

例如: 如果您的網站,在那裏JS腳本位於: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"); 
0

我有經驗XDomainRequest是它不尊重Access-Control-Allow-Origin: *。相反,您必須指定域。如果您需要動態生成它,可以從HTTP_REFERER頭獲得,或者您只希望來自一個域的請求可以手動設置。 This article might help.

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