李永毅
(長(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)生成
清水河县|
石景山区|
措美县|
黄平县|
漯河市|
通城县|
增城市|
鄂温|
永吉县|
毕节市|
哈尔滨市|
信丰县|
调兵山市|
柯坪县|
磴口县|
册亨县|
醴陵市|
汉中市|
广元市|
罗源县|
嘉禾县|
灵台县|
探索|
万年县|
盐城市|
漳州市|
胶州市|
赤水市|
南溪县|
芮城县|
玉门市|
临桂县|
民县|
章丘市|
山西省|
南丰县|
崇信县|
青川县|
甘德县|
丹阳市|
永胜县|