手写一个jsonp实现
JSONP是JSON with padding(填充式JSON或參數式JSON)的簡寫,是應用JSON的一種新方法,在后來的Web服務中非常流行。JSONP看起來與JSON差不多,只不過是被包含在函數調用中的JSON,就像下面這樣。
callback({ “name”: “Nicholas” });JSONP由兩部分組成:回調函數和數據。回調函數是當響應到來時應該在頁面中調用的函數。回調函數的名字一般是在請求中指定的。而數據就是傳入回調函數中的JSON數據。下面是一個典型的JSONP請求。
http://freegeoip.net/json/?callback=handleResponse這個URL是在請求一個JSONP地理定位服務。通過查詢字符串來指定JSONP服務的回調參數是很常見的,就像上面的URL所示,這里指定的回調函數的名字叫handleResponse() 。
JSONP是通過動態 <script> 元素來使用的,使用時可以為 src 屬性指定一個跨域URL。這里的 <script> 元素與 <img> 元素類似,都有能力不受限制地從其他域加載資源。因為JSONP是有效的JavaScript代碼,所以在請求完成后,即在JSONP響應加載到頁面中以后,就會立即執行。來看一個例子。
function handleResponse(response){alert(“You’re at IP address ” + response.ip + ”, which is in ” +?response.city + ”, ” + response.region_name);}var script = document.createElement(“script”);script.src = “http://freegeoip.net/json/?callback=handleResponse”;document.body.insertBefore(script, document.body.firstChild);這個例子通過查詢地理定位服務來顯示你的IP地址和位置信息。
JSONP之所以在開發人員中極為流行,主要原因是它非常簡單易用。與圖像Ping相比,它的優點在于能夠直接訪問響應文本,支持在瀏覽器與服務器之間雙向通信。不過,JSONP也有不足。
首先,JSONP是從其他域中加載代碼執行。如果其他域不安全,很可能會在響應中夾帶一些惡意代碼,而此時除了完全放棄JSONP調用之外,沒有辦法追究。因此在使用不是你自己運維的Web服務時,一定得保證它安全可靠。
總結
以上是生活随笔為你收集整理的手写一个jsonp实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对于并列的TextField实现同步控制
- 下一篇: Dubbo的静态服务