我有一個現有的Java客戶端上的IOS,andriod開發人員準備了一個簡單的http請求爲基礎的應用程序。我試圖在HTML5應用中實現相同的功能。發送樸素ajax HTTP請求與自定義標題
而現在我面臨的困難是在AJAX請求中發送一個自定義標題,就像使用加密登錄細節進行授權一樣。
我試圖在各種REST客戶端上實現相同的功能,並能夠在請求標頭中發送「AUTHORIZATION:BASIC XXXXXX =」。並得到適當的JSON響應」
但是,如果我同樣使用Ajax調用嘗試我無法發送類似的請求頭。請求發送作爲選項,而不是GET和授權標籤不正確會爲標題代替它的將是「訪問控制請求報頭:授權」。
,這裏是我曾嘗試片斷
<script>
//$.ajaxSetup({ headers: { 'Authorization': 'Basic XXXXXXX='} })
// get form data for POSTING
var vFD = new FormData(document.getElementById('upload_form'));
var oXHR = new XMLHttpRequest();
oXHR.open('POST', "https://123.123.123.123:229/");
//oXHR.send(vFD);
var body = 'Basic XXXXXXX=';
var mUrl = "https://123.123.123.123:229/?json";
var client = new XMLHttpRequest();
client.open('GET', mUrl, true);
client.withCredentials = true;
client.crossDomain = true,
client.setRequestHeader('Authorization', 'Basic XXXXXXX=');
client.send(body);
simpleHttpRequest();
function simpleHttpRequest() {
alert("calling ");
var headers = {
"Authorization": "Basic XXXXXXX="
};
$.ajaxSetup({ "headers": headers });
$.ajaxSetup({ 'cache': false });
$.ajax({
type: "GET",
withCredentials: true,
// data: {
// address: 'http://www.google.com'
// },
crossDomain: true,
Headers: { "Authorization": "Basic XXXXXXX=" },
dataType: "jsonp",
url: mUrl,
cache: false
});
}
xhrToSend();
function xhrToSend() {
// Attempt to creat the XHR2 object
var xhr;
try {
xhr = new XMLHttpRequest();
} catch (e) {
try {
xhr = new XDomainRequest();
} catch (e) {
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e) {
statusField('\nYour browser is not' +
' compatible with XHR2');
}
}
}
}
xhr.withCredentials = true;
xhr.open('GET', mUrl, true);
xhr.setRequestHeader("Authorization", "numberOfBLObsSent");
xhr.send();
};
</script>
及各種不同的方式得到失敗,請幫我
在此先感謝。
感謝您的回覆。我明白這是CORS的理由,但爲什麼它在我的REST,HTTP瀏覽器客戶端和移動應用程序中工作。但不是在我的AJAX調用? –
跨域策略不是HTTP的一部分,它是Web瀏覽器實現的一項功能,可提高安全性。因此,只有網頁瀏覽器受制於跨域的規則。 – levi
請參閱 - http://en.wikipedia.org/wiki/Same-origin_policy – levi