成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

利用Jsonp實(shí)現(xiàn)跨域請(qǐng)求,spring MVC+JQuery

xiangzhihong / 2689人閱讀

摘要:慣例上瀏覽器提供回調(diào)函數(shù)的名稱當(dāng)作送至服務(wù)器的請(qǐng)求中命名查詢參數(shù)的一部分,例如服務(wù)器會(huì)在傳給瀏覽器前將數(shù)據(jù)填充到回調(diào)函數(shù)中。

1 什么是Jsonp?

JSONP(JSON with Padding)是數(shù)據(jù)格式JSON的一種“使用模式”,可以讓網(wǎng)頁(yè)從別的網(wǎng)域要數(shù)據(jù)。另一個(gè)解決這個(gè)問題的新方法是跨來源資源共享。

由于同源策略,一般來說位于www.42du.cn的網(wǎng)頁(yè)無法與不是 www.42du.cn的服務(wù)器溝通,而HTML的 < script >元素是一個(gè)例外。利用 < script >元素的這個(gè)開放策略,網(wǎng)頁(yè)可以得到從其他來源動(dòng)態(tài)產(chǎn)生的JSON數(shù)據(jù),而這種使用模式就是所謂的JSONP。用JSONP抓到的數(shù)據(jù)并不是JSON,而是任意的JavaScript,用 JavaScript解釋器運(yùn)行而不是用JSON解析器解析。

2 Jsonp基本原理

為了理解這種模式的原理,先想像有一個(gè)回傳JSON文件的URL,而JavaScript 程序可以用XMLHttpRequest跟這個(gè)URL要數(shù)據(jù)。假設(shè)我們的URL是 http://tools.42du.cn/jsonp/st... 。假設(shè)iFat3的st_no是3,當(dāng)瀏覽器通過URL傳遞iFat3的st_id,也就是抓取http://tools.42du.cn/jsonp/st...,得到:

{"st_no":3,"st_name":"iFat3","st_desc":"iFat3是學(xué)校的超級(jí)學(xué)渣"}

這個(gè)JSON數(shù)據(jù)可能是依據(jù)傳過去URL的查詢參數(shù)動(dòng)態(tài)產(chǎn)生的。

這個(gè)時(shí)候,把 < script >元素的src屬性設(shè)成一個(gè)回傳JSON的URL是可以想像的,這也代表從HTML頁(yè)面通過script元素抓取 JSON是可能的。

然而,一份JSON文件并不是一個(gè)JavaScript程序。為了讓瀏覽器可以在 < script >元素運(yùn)行,從src里URL 回傳的必須是可運(yùn)行的JavaScript。在JSONP的使用模式里,該URL回傳的是由函數(shù)調(diào)用包起來的動(dòng)態(tài)生成JSON,這就是JSONP的“填充(padding)”或是“前輟(prefix)”的由來。

慣例上瀏覽器提供回調(diào)函數(shù)的名稱當(dāng)作送至服務(wù)器的請(qǐng)求中命名查詢參數(shù)的一部分,例如:

                 
閱讀需要支付1元查看
<