資源描述:
《ajax(xmlhttprequest)進(jìn)行跨域請(qǐng)求方法詳解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、注意:以下代碼請(qǐng)?jiān)贔irefox3.5、Chrome3.0、Safari4之后的版本中進(jìn)行測(cè)試。IE8的實(shí)現(xiàn)方法與其他瀏覽不同??缬蛘?qǐng)求,顧名思義,就是一個(gè)站點(diǎn)中的資源去訪問(wèn)另外一個(gè)不同域名站點(diǎn)上的資源。這種情況很常見(jiàn),比如說(shuō)通過(guò)style標(biāo)簽加載外部樣式表文件、通過(guò)img標(biāo)簽加載外部圖片、通過(guò)script標(biāo)簽加載外部腳本文件、通過(guò)Webfont加載字體文件等等。默認(rèn)情況下,腳本訪問(wèn)文檔屬性等數(shù)據(jù)采用的是同源策略(Sameoriginpolicy)。那么,什么是同源策略呢?如果兩個(gè)頁(yè)面的協(xié)議、域名和端口是完全相同的,那么它們就是同源的。同源策略是
2、為了防止從一個(gè)地址加載的文檔或腳本訪問(wèn)或者設(shè)置從另外一個(gè)地址加載的文檔的屬性。如果兩個(gè)頁(yè)面的主域名相同,則還可以通過(guò)設(shè)置document.domain屬性將它們認(rèn)為是同源的。隨著Web2.0和SNS的興起,Web應(yīng)用對(duì)跨域訪問(wèn)的需求也越來(lái)越多,但是,在腳本中進(jìn)行跨域請(qǐng)求是受安全性限制的,Web開(kāi)發(fā)人員迫切需要提供一種更安全、方便的跨域請(qǐng)求方式來(lái)融合(Mashup)自己的Web應(yīng)用。這樣做的一個(gè)好處就是可以將請(qǐng)求分?jǐn)偟讲煌姆?wù)器,減輕單個(gè)服務(wù)器壓力以提高響應(yīng)速度;另外一個(gè)好處是可以將不同的業(yè)務(wù)邏輯分布到不同的服務(wù)器上以降低負(fù)載。值得慶幸的是,跨域
3、請(qǐng)求的標(biāo)準(zhǔn)已經(jīng)出臺(tái),主流瀏覽器也已經(jīng)實(shí)現(xiàn)了這一標(biāo)準(zhǔn)。W3C工作組中的WebApplicationsWorkingGroup(Web應(yīng)用工作組)發(fā)布了一個(gè)Cross-OriginResourceSharing(跨域資源共享,該規(guī)范地址:http://www.w3.org/TR/access-control/和http://dev.w3.org/2006/waf/access-control/)推薦規(guī)范來(lái)解決跨域請(qǐng)求的問(wèn)題。該規(guī)范提供了一種更安全的跨域數(shù)據(jù)交換方法。具體規(guī)范的介紹可以訪問(wèn)上面提供的網(wǎng)站地址。值得注意的是:該規(guī)范只能應(yīng)用在類(lèi)似XMLHt
4、tprequest這樣的API容器內(nèi)。IE8、Firefox3.5及其以后的版本、Chrome瀏覽器、Safari4等已經(jīng)實(shí)現(xiàn)了Cross-OriginResourceSharing規(guī)范,已經(jīng)可以進(jìn)行跨域請(qǐng)求了。Cross-OriginResourceSharing的工作方式是通過(guò)添加HTTP頭的方法來(lái)判斷哪些資源允許Web瀏覽器訪問(wèn)該域名下的信息。然而,對(duì)于那些HTTP請(qǐng)求導(dǎo)致用戶(hù)數(shù)據(jù)產(chǎn)生副作用的請(qǐng)求方法(特別是對(duì)于除了GET、某些MIME類(lèi)型的POST之外的HTTP方法),該規(guī)范要求瀏覽器對(duì)請(qǐng)求進(jìn)行“預(yù)先驗(yàn)”,通過(guò)發(fā)送HTTP的OPTIONS
5、請(qǐng)求頭詢(xún)問(wèn)服務(wù)器有哪些支持的方法,在征得服務(wù)器的同意后,再使用實(shí)際的HTTP請(qǐng)求方法發(fā)送實(shí)際的請(qǐng)求。服務(wù)器也可以通知客戶(hù)端是否需要將驗(yàn)證信息(如Cookie和HTTPAuthentication數(shù)據(jù))隨同請(qǐng)求一起發(fā)送。下面我們就采用實(shí)際的例子說(shuō)明Cross-OriginResourceSharing是如何工作的。1,簡(jiǎn)單請(qǐng)求什么樣的請(qǐng)求算是簡(jiǎn)單請(qǐng)求呢?簡(jiǎn)單請(qǐng)求必須滿足下面2點(diǎn):a,只使用GET、POST進(jìn)行的請(qǐng)求,這里的POST只包括發(fā)送給服務(wù)器的數(shù)據(jù)類(lèi)型(Content-Type)必須是application/x-www-form-urlenc
6、oded、multipart/form-data或者text/plain中一個(gè)。good,noloosening.6.5.2DCSsidewiringtocompletetheenclosureandtheothersideafterthewiringiscompleted,DCSwithintheenclosurewhenthepowermoduleshouldbeloosenedorthepowergoesout.6.6lowvoltagecableterminalmaking6.6.1firstb,HTTP請(qǐng)求沒(méi)有設(shè)置自定義的請(qǐng)求頭,如我們
7、常用的X-JSON。先使用下面的代碼進(jìn)行測(cè)試:孟憲會(huì)之AJAX跨域請(qǐng)求測(cè)試8、inRequest()'/>