javascript
什么是JSONP以及它是怎么产生的
什么是JSONP以及它是怎么產生的
? ? ? ? 1.什么是jsonp
? ? ? ? ? ? ? ? JSONP(JSON with Padding)是一個非官方的協議,它允許在服務器端集成Script tags返回至客戶端,通過javascript callback的形式實現跨域訪問(這僅僅是JSONP簡單的實現形式)。
? ? ? ? 2.它是怎么產生的
? ? ? ? ? ? ? ? 1、一個眾所周知的問題,Ajax直接請求普通文件存在跨域無權限訪問的問題,甭管你是靜態頁面、動態網頁、web服務、WCF,只要是跨域請求,一律不準;
? ? ? ? ? ? ? ? 2、不過我們又發現,Web頁面上調用js文件時則不受是否跨域的影響(不僅如此,我們還發現凡是擁有”src”這個屬性的標簽都擁有跨域的能力,比 如<script>、<img>、<iframe>);
? ? ? ? ? ? ? ? 3、于是可以判斷,當前階段如果想通過純web端(ActiveX控件、服務端代理、屬于未來的HTML5之Websocket等方式不算)跨域訪問數據 就只有一種可能,那就是在遠程服務器上設法把數據裝進js格式的文件里,供客戶端調用和進一步處理;
? ? ? ? ? ? ? ? 4、恰巧我們已經知道有一種叫做JSON的純字符數據格式可以簡潔的描述復雜數據,更妙的是JSON還被js原生支持,所以在客戶端幾乎可以隨心所欲的處理這種格式的數據;
? ? ? ? ? ? ? ? 5、這樣解決方案就呼之欲出了,web客戶端通過與調用腳本一模一樣的方式,來調用跨域服務器上動態生成的js格式文件(一般以JSON為后綴),顯而易 見,服務器之所以要動態生成JSON文件,目的就在于把客戶端需要的數據裝入進去。
? ? ? ? ? ? ? ? 6、客戶端在對JSON文件調用成功之后,也就獲得了自己所需的數據,剩下的就是按照自己需求進行處理和展現了,這種獲取遠程數據的方式看起來非常像AJAX,但其實并不一樣。
? ? ? ? ? ? ? ? 7、為了便于客戶端使用數據,逐漸形成了一種非正式傳輸協議,人們把它稱作JSONP,該協議的一個要點就是允許用戶傳遞一個callback 參數給服務端,然后服務端返回數據時會將這個callback參數作為函數名來包裹住JSON數據,這樣客戶端就可以隨意定制自己的函數來自動處理返回數 據了。
轉載于:https://www.cnblogs.com/ricesm/p/5055031.html
總結
以上是生活随笔為你收集整理的什么是JSONP以及它是怎么产生的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Path Sum I, II
- 下一篇: MySql数据库表类型MYISAM与In