1. 程式人生 > >跨域JSONP原理及呼叫具體示例

跨域JSONP原理及呼叫具體示例

  上篇部落格介紹了同源策略和跨域訪問概念,其中提到跨域常用的基本方式:JSONP和CORS。   那這篇部落格就介紹JSONP方式。   JSONP原理   在同源策略下,在某個伺服器下的頁面是無法獲取到該伺服器以外的資料的,但img、iframe、script等標籤是個例外,這些標籤可以通過src屬性請求到其他伺服器上的資料。   而JSONP就是通過script節點src呼叫跨域的請求。   當我們通過JSONP模式請求跨域資源時,伺服器返回給客戶端一段javascript程式碼,這段javascript程式碼自動呼叫客戶端回撥函式。   舉個例子   客戶端http://localhost:8080訪問伺服器http://localhost:11111/user,正常情況下,這是不允許的。因為這兩個URL是不同域的。   若我們使用JSONP格式傳送請求的話?   http://localhost:11111/user?callback=callbackfunction   則伺服器返回的資料如下:   callbackfunction({"id":1,"name":"test"})   仔細看看伺服器返回的資料,其實就是一段javascript程式碼,這就是函式名(引數)格式。   伺服器返回後,則自動執行callbackfunction函式。   因此,客戶端需要callbackfunction函式,以便使用JSONP模式返回javascript程式碼後自動執行其回撥函式。   注意:其中url地址中的callback和callbackfunction是隨意命名的。
 具體的JS實現JSONP程式碼。   JS中: