1. 程式人生 > >JavaScript中的jsonp(跨域請求)

JavaScript中的jsonp(跨域請求)

ajax中的jsonp跨域請求,固定格式,然後就可以了。為什麼卻沒有深入的理解過。讀了相關資料,將總結寫到這裡。

何為JSONP?

JSONP(JSON width padding)是一種不成文的協議,允許服務端將script tags 返回到客戶端,使用JavaScript callback實現跨域訪問。

跨域為何出現?

由於瀏覽器的同源策略,通過隔離保護資源的安全。也即同源策略限制將阻止程式碼獲取或者更改從其他域名獲得的檔案或資訊。為此出現了跨域。又由於在頁面中使用動態的程式碼,其源指向伺服器地址,在自己的程式碼中動態的載入資料。程式碼執行時,同源策略是不起作用的。這個方法和JSON 相結合,JSONP出現了。

使用ajax實現跨域時三個有特點的屬性如下:

1、dataType:"JSONP";

2、jsonp:"jsoncallback"; 此屬性不指定預設為:callback。是客戶端請求伺服器端介面是所傳的引數名稱。這個引數名稱的指就是介面中返回的指令碼函式的名稱,這個值在第三個屬性中指定。如下圖所示



3、jsonpCallback:"callbackHandler";此屬性不指定預設為jquery自動生成的函式名。是服務端介面返回的指令碼函式名稱。也是客戶端請求介面時所傳遞引數jsoncallback的值。如下圖 (由於程式碼中沒有指定,預設為jquery自動生成的函式名)


搞清楚來龍去脈了,繼續研究ajax原始碼。