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

圖1JSONP跨域訪問(wèn)
如圖1所示。JSONP跨域獲取非同域數(shù)據(jù)需要:①首先瀏覽器訪問(wèn)服務(wù)器A中a.html文件。②服務(wù)器A對(duì)瀏覽器做出響應(yīng),瀏覽器接收到響應(yīng)的severA.html文件,severA.html中包含xxx函數(shù)的定義及響應(yīng)事件腳本代碼。③客戶端瀏覽器響應(yīng)事件,執(zhí)行響應(yīng)事件代碼,動(dòng)態(tài)生成
方山县|
双城市|
双鸭山市|
溆浦县|
茶陵县|
原阳县|
元朗区|
昌平区|
拜城县|
桐庐县|
开鲁县|
太和县|
门源|
惠安县|
游戏|
郎溪县|
衡阳市|
红河县|
砀山县|
陇川县|
泾阳县|
黔西|
阿拉善盟|
金门县|
周口市|
天全县|
平凉市|
张家川|
藁城市|
文安县|
沙雅县|
中江县|
新野县|
东安县|
屏东市|
十堰市|
儋州市|
江津市|
当阳市|
永寿县|
北流市|