1. 程式人生 > >跨域詳解之jsonp

跨域詳解之jsonp

jsonp是非官方協議,意思就是它是一種預設的約定的形式。

它是用來解決跨域問題的。

它需要改動後臺程式碼。

下面來講解jsonp的原理。

    看一下jsonp發出的請求長啥樣吧。


    紅色的就是jsonp請求,這裡很明顯type是script形式的,與我們引用js檔案的型別是一樣的。js檔案沒有同源要求。所以jsonp是模仿這種形式。

    jsonp是一種約定,可以發現請求的連結裡有一個callback=jQuery113......這個就是約定所在。

後臺程式碼是這樣。


    可以看到後臺如果發現有callback=....時候認為是jsonp形式,那麼他就會返回一個js碎片。


可以看到jsonp的請求為localhost:8080/test/get?callback=jQuery11103....&_1511...

後面的&是時間戳,防止瀏覽器快取。

返回的很明顯不是json資料。而是一段js程式碼。方法名為jsonp請求連結中callback=後面的引數。括號內參數為後臺返回的資料。

這就是jsonp的原理。

總結:jsonp採用約定的形式,在連結中新增callback引數,後臺識別到約定資料後,將資料以js碎片檔案的形式返回給前臺,js中方法名為請求的callback引數。

jsonp解決跨域問題的弊端

     伺服器要改動
只支援get方法。