jsonp的跨域原理

2022-04-28 16:48:10 字數 975 閱讀 3720

在開發測試中,難免會在不同域下進行跨域操作,出於安全性考慮,瀏覽器中的同源策略阻止從乙個域上載入的指令碼獲取或者操作

另乙個域下的文件屬性,這時需要進行跨域的方式進行解決,如:使用jsonp ,iframe等

jsonp,即json+padding,動態建立script標籤,利用script標籤的src屬性可以獲取任何域下的js指令碼,通過這個特性(也可以說漏洞),伺服器端不在返回json格式,而是返回一段呼叫某個函式的js**,在src中進行了呼叫,這樣實現了跨域.

這裡呼叫了跨域的remote.js指令碼,remote.js**如下:

jsonhandle()

這個**相當於是執行了

jsonhandle()這個函式。

2.最後jquery提供了方便使用jsonp的方式,**如下:

完美解決在測試或者開發中獲取不同域下的資料,使用者傳遞乙個callback引數給服務端,然後服務端返回資料時會將這個callback。引數作為函式名來包裹住json資料,這樣客戶端就可以隨意定製自己的函式來自動處理返回資料了。

簡單來說資料的格式沒有發生很大變化。

jsonp缺點:

1.jsonp只支援get請求而不支援post請求,也即是說如果想傳給後台乙個json格式的資料,此時問題就來了,瀏覽器會報乙個http狀態碼

415錯誤,告訴你請求格式不正確

2安全問題

安全防範:

1.防止callback引數意外截斷js**,特殊字元單引號雙引號,換行符存在風險.

2.防止callback引數惡意新增script標籤,造成xss漏洞

3.防止跨域請求濫用,阻止非法站點惡意呼叫

詳細請看:

jsonp跨域原理

jsonp跨域請求是借助於表單元素的 src 屬性的 跨域 實現的,具體實現如下 1 html頁面 2 服務端 restcontroller public class jsonpcontroller return callback jsonp和ajax並無關係,只是借助了src屬性的 跨域 特性來實...

jsonp跨域請求原理分析

為了解決跨域問題,開發者創造出一種非官方跨域資料互動協議 jsonp。script src 不受跨域限制。如下例子 即便在本地使用該標籤,也能有效訪問 src script jsonp實現原理 我們自己先建立乙個函式,請求成功並獲取到伺服器傳送的相應後,這個函式會被呼叫,注意,這個函式必須在 win...

js jsonp跨域請求原理以及jsonp的封裝

瀏覽器提出了一種同源策略 當請求頁面和請求位址之間沒有遵守同源策略時,且請求資源沒有明確表示允許,那麼瀏覽器會阻止ajax請求 解決跨域問題 前端jsonp是利用script標籤可以引入外部資源,並將引入的外部資源作為js 解析的特性,獲取跨域資源 jsonp的封裝 jsonp封裝 function...