李永毅
(長治學院 計算機系,山西 長治 046011)
1 引言
隨著大數(shù)據(jù)及互聯(lián)網(wǎng)的迅猛發(fā)展,大型分布式web系統(tǒng)應運而生,促使前端腳本需要跨域訪問異域數(shù)據(jù),這與客戶端瀏覽器腳本的同源策略背道而馳,如何合理解決瀏覽器腳本代碼的同源策略限制,使其能夠跨域訪問是目前面臨的問題[1]。針對瀏覽器腳本代碼跨域請求的同源策略限制,提出幾種解決方案,并進行對比,為分布式跨域請求的不同場景提供了靈活的解決方案。
2 跨域請求的解決方案
同源策略是瀏覽器為了安全性考慮,實施的最核心的安全性策略[2]。同源指的是協(xié)議、ip地址及端口號相同。同源策略指的是同一源上加載的文檔或腳本代碼不能訪問另一源上的資源[3]。如:JavaScirpt腳本不能訪問與其非同域的對象。若要訪問非同域?qū)ο髸r就需要跨域請求。
2.1 JSONP解決跨域訪問原理

圖1JSONP跨域訪問
如圖1所示。JSONP跨域獲取非同域數(shù)據(jù)需要:①首先瀏覽器訪問服務器A中a.html文件。②服務器A對瀏覽器做出響應,瀏覽器接收到響應的severA.html文件,severA.html中包含xxx函數(shù)的定義及響應事件腳本代碼。③客戶端瀏覽器響應事件,執(zhí)行響應事件代碼,動態(tài)生成