過(guò)去,XMLHHttpRequest 僅限于同源通信。XMLHttpRequest Level 2 通過(guò) CORS (Cross Origin Resource Sharing,跨源資源共享> 實(shí)現(xiàn)了跨源XMLHttpRequests。
跨源HTIP請(qǐng)求括一個(gè)Origin頭部,它為服務(wù)器提供HTTP請(qǐng)求的源信息頭部由瀏覽器保護(hù),不能被應(yīng)用程序代碼更改。從本質(zhì)上講,它與跨文檔消息通信中消息亊件的origin屬 性作用相同。Origin頭部不同于早先的Referer [Sic]頭部,因?yàn)楹笳咧械?/span>Referer是一個(gè)包括了 路徑的完整URL。由于路徑可能包含敏感信患,為了保護(hù)用戶隱私,瀏覽器并不一定會(huì)發(fā)送 Refers,而瀏覽器在任何必要的時(shí)候都會(huì)發(fā)送Origin頭部,
使用跨《XMLHttpRcquest可以構(gòu)建基于非同源服務(wù)的Web應(yīng)用程序,例如,如果Web應(yīng) 用程序使用了一個(gè)海的靜態(tài)文本和另一個(gè)源的Ajax服務(wù),那么它可以偺助跨海XMLHttpRequest 請(qǐng)求實(shí)現(xiàn)在兩個(gè)源之間的通信,如果沒(méi)有跨源XMLHttpRequest則只能進(jìn)行通信,而且部署方式也會(huì)受到限制?也許不得不將Web應(yīng)用程序部署在一個(gè)單獨(dú)域中或者再為其建立一個(gè)子域。
如圖5*4所示,通過(guò)跨源XMLHttpRequest可以從客戶端整合來(lái)自不同源的內(nèi)容。如果目標(biāo)服務(wù)器允許,可以使用用戶證書訪問(wèn)受保護(hù)的內(nèi)容,進(jìn)而讓用戶直接訪問(wèn)個(gè)人的數(shù)據(jù)。反之,如果通過(guò)服務(wù)器端對(duì)不同源進(jìn)行整合,則所有內(nèi)容都要穿過(guò)一個(gè)服務(wù)器端的基礎(chǔ)層。