以下是我試圖通過Ajax調用進行的跨域調用。我們使用的Web服務僅返回XML,因此我不能使用jsonp
作爲dataType
。正如我在它下面寫的,我收到以下錯誤在Chrome的調試器:在Ajax調用中實現響應標頭
Uncaught ReferenceError: Request is not defined
下面是代碼:
function GetProgramDetails() {
var URL = "http://quahildy01/xRMDRMA02/xrmservices/2011/OrganizationData.svc/AccountSet?$select=AccountId,Name,neu_UniqueId&$filter=startswith(Name,\'" + $('.searchbox').val() + "\')";
var sourceDomain = Request.Headers["Origin"];
var request = $.ajax({
type: 'POST',
beforeSend: function(request){
request.setRequestHeader("Access-Control-Allow-Origin", sourceDomain)
},
url: URL,
contentType: "application/x-www-form-urlencoded",
crossDomain: true,
dataType: XMLHttpRequest,
success: function (data) {
console.log(data);
alert(data);
},
error: function (data) {
console.log(data);
alert("Unable to process your resquest at this time.");
}
});
}
編輯
我試過以下版本這段代碼並沒有在錯誤信息中看到任何不同的內容。這是在企業環境中使用的,所以有可能由於服務器上的安全功能,這是不可能的?我對Ajax是全新的,所以我不知道這是否可以在100%的時間內運行,或者只是在大部分設置中運行。
beforeSend: function (request) {
request.setRequestHeader("Access-Control-Allow-Origin: *")
},
beforeSend: function (request) {
request.setRequestHeader("Access-Control-Allow-Origin: ", "http://localhost:55152")
},
beforeSend: function (request) {
request.setRequestHeader("Access-Control-Allow-Origin", "http://localhost:55152")
},
beforeSend: function (request) {
var sourceDomain = request.Headers["http://localhost:55152"];
request.setRequestHeader("Access-Control-Allow-Origin: ", sourceDomain)
},
beforeSend: function (request) {
var sourceDomain = location.protocol + '//' + location.host;
request.setRequestHeader("Access-Control-Allow-Origin: ", sourceDomain)
},
當我執行這個時,我得到的錯誤:未捕獲的TypeError:無法讀取屬性未定義的'Origin' – NealR 2013-03-21 15:40:09
對不起,意思是說,無論我改變'[「Origin」]'(在我的情況下'http:// localhost:55152')我得到'Uncaught TypeError' – NealR 2013-03-21 15:52:06
你爲什麼要設置sourceDomain那樣?爲什麼不從URL中獲取? jqXHR沒有「Headers」屬性/方法。 – 2013-03-21 15:56:13