ajax跨域请求原理,Ajax跨域请求的原理(图文教程)
這篇文章主要為大家詳細(xì)介紹了Ajax跨域請(qǐng)求的原理,Ajax怎么樣做跨域請(qǐng)求?具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了Ajax跨域請(qǐng)求的具體實(shí)現(xiàn)過(guò)程,供大家參考,具體內(nèi)容如下
下面我們?cè)诒镜亟▋蓚€(gè)站點(diǎn)演示一下
第一步首先我們?cè)诒镜卮罱ê靡粋€(gè)Apache服務(wù)器;下載地址;
第二步服務(wù)器配置好以后,在本地配置好兩個(gè)虛擬的域名;
第三步我們?cè)贑盤(pán)建一個(gè)文件夾命名為”HTML5”;
第四步找到Apache虛擬主機(jī)的配置文件,然后打開(kāi)配置文件
第五步在第三步建的HTML5文件夾下分別建一個(gè)文件夾a和文件夾b;
第六步修改Apache虛擬主機(jī)的配置文件,如圖
第七步修改一下host文件,添加a和b的網(wǎng)址,通常host文件路徑在C:\Windows\System32\drivers\etc 下
我們?cè)贖TML5/a文件夾下建一個(gè)7.ajax.html文件
獲取同域下內(nèi)容window.onload = function() {
var oBtn = document.getElementById('btn');
// 忽略IE6
oBtn.onclick = function() {
//創(chuàng)建一個(gè)ajax對(duì)象
var xhr = new XMLHttpRequest();
//監(jiān)聽(tīng)事件
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
alert(xhr.responseText);
}
}
}
xhr.open('get', 'ajax.php', true);
xhr.send();
}
}
我們先看一下同域下的請(qǐng)求
我們?cè)贖TML5/a下建一個(gè)php文件,返回'hello';
這時(shí)候我們?cè)诖蜷_(kāi)當(dāng)前頁(yè)面 http://www.a.com/7.ajax.html,點(diǎn)擊按鈕我們發(fā)現(xiàn)請(qǐng)求到了數(shù)據(jù);
http://www.a.com/7.ajax.html
但是如果跨域的話(huà),即你所請(qǐng)求的數(shù)據(jù)和當(dāng)前文件不在一個(gè)域下面,這樣的話(huà)就會(huì)產(chǎn)生跨域請(qǐng)求,通常在這種情況下就會(huì)禁止你去訪(fǎng)問(wèn)
例如我們現(xiàn)在將剛才在HTML5/a文件夾下的ajax.php文件放到b文件夾下
這時(shí)候點(diǎn)擊后我們發(fā)現(xiàn)請(qǐng)求報(bào)錯(cuò)了,意思是跨域請(qǐng)求受到了限制
這時(shí)候我們需要后端配合,你需要告訴后端在輸出的時(shí)候加一個(gè)”Access-Control-Allow-Origin”頭信息
比如說(shuō):如圖,意思只要是這個(gè)域名的跨域請(qǐng)求就不受跨域策略的影響
這時(shí)候我點(diǎn)擊的時(shí)候,就可以正常獲取跨域的數(shù)據(jù)了
如果你想兼容IE需要
ajax跨域請(qǐng)求window.onload = function() {
/*
在標(biāo)準(zhǔn)瀏覽器下,XMLHttpRequest對(duì)象已經(jīng)是升級(jí)版本,支持了更多的特性,可以跨域了
但是,如果想實(shí)現(xiàn)跨域請(qǐng)求,還需要后端的相關(guān)配合才可以
XMLHttpRequest : 增加很多功能,他也不推薦使用onreadystatechange這個(gè)事件來(lái)監(jiān)聽(tīng),推薦使用onload
*/
var oBtn = document.getElementById('btn');
oBtn.onclick = function() {
// 這是標(biāo)準(zhǔn)瀏覽器寫(xiě)法
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
alert(xhr.responseText);
}
}
}
xhr.open('get', 'http://www.b.com/ajax.php', true);
xhr.send();
/*
如果你想兼容IE瀏覽器,可以特地為IE做兼容,忽略IE6
XDomainRequest : IE如果想實(shí)現(xiàn)跨域請(qǐng)求,則需要使用這個(gè)對(duì)象去實(shí)現(xiàn)
var oXDomainRequest = new XDomainRequest();
oXDomainRequest.onload = function() {
alert(this.responseText);
}
oXDomainRequest.open('get', 'http://www.b.com/ajax.php', true);
oXDomainRequest.send();
*/
}
}
上面是我整理給大家的,希望今后會(huì)對(duì)大家有幫助。
相關(guān)文章:
AJAX請(qǐng)求隊(duì)列使用詳解
jQuery+ajax使用get()函數(shù)讀取頁(yè)面步驟詳解
ajax讀取properties步驟詳解
總結(jié)
以上是生活随笔為你收集整理的ajax跨域请求原理,Ajax跨域请求的原理(图文教程)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ajax判断密码是否一致,jquery.
- 下一篇: 6.ajax应用,ajax应用