摘要:同源策略,它是由提出的一個著名的安全策略,現(xiàn)在所有支持的瀏覽器都會使用這個策略。客戶端在對文件調用成功之后,也就獲得了自己所需的數(shù)據(jù),剩下的就是按照自己需求進行處理和展現(xiàn)了,這種獲取遠程數(shù)據(jù)的方式看起來非常像,但其實并不一樣。
參考資料
一、先說說JSON首先JSON是一種基于文本的數(shù)據(jù)交換方式,或者叫做數(shù)據(jù)描述格式。
JSON的優(yōu)點:
基于純文本,跨平臺傳遞極其簡單;
Javascript原生支持,后臺語言幾乎全部支持;
輕量級數(shù)據(jù)格式,占用字符數(shù)量極少,特別適合互聯(lián)網(wǎng)傳遞;
可讀性較強,雖然比不上XML那么一目了然,但在合理的依次縮進之后還是很容易識別的;
容易編寫和解析,當然前提是你要知道數(shù)據(jù)結構;
二、同源策略一個眾所周知的問題,由于同源策略,Ajax直接請求普通文件存在跨域無權限訪問的問題。
同源策略,它是由Netscape提出的一個著名的安全策略,現(xiàn)在所有支持JavaScript的瀏覽器都會使用這個策略。
但是,Web頁面上調用js文件時則不受是否跨域的影響,不僅如此,凡是擁有”src”屬性的標簽都擁有跨域的能力,比如、、。
因此,如果想通過純web端跨域訪問數(shù)據(jù)就只有一種方案,那就是在遠程服務器上設法把數(shù)據(jù)裝進js格式的文件里,供客戶端調用和進一步處理。
三、JSONPJsonp(JSON with Padding) 是 json 的一種"使用模式",可以讓網(wǎng)頁從別的域名(網(wǎng)站)那獲取數(shù)據(jù),即跨域讀取數(shù)據(jù)。
客戶端通過與調用腳本一模一樣的方式,來調用跨域服務器上動態(tài)生成的js格式文件(一般以JSON為后綴),顯而易見,服務器之所以要動態(tài)生成JSON文件,目的就在于把客戶端需要的數(shù)據(jù)裝入進去。
客戶端在對JSON文件調用成功之后,也就獲得了自己所需的數(shù)據(jù),剩下的就是按照自己需求進行處理和展現(xiàn)了,這種獲取遠程數(shù)據(jù)的方式看起來非常像AJAX,但其實并不一樣。
為了便于客戶端使用數(shù)據(jù),逐漸形成了一種非正式傳輸協(xié)議,也就是JSONP,該協(xié)議的一個要點就是允許用戶傳遞一個callback參數(shù)給服務端,然后服務端返回數(shù)據(jù)時會將這個callback參數(shù)作為函數(shù)名來包裹住JSON數(shù)據(jù),這樣客戶端就可以隨意定制自己的函數(shù)來自動處理返回數(shù)據(jù)了。
ajax和jsonp本質上是完全不同的東西。ajax的核心是通過XmlHttpRequest獲取非本頁內容,而jsonp的核心則是動態(tài)添加