JSONP跨域實現

2021-09-13 02:13:55 字數 1325 閱讀 9991

跨域問題是由於瀏覽器為了防止csrf攻擊,避免惡意攻擊而帶來的風險

而採取的同源策略限制

當乙個頁面中使用xmlhttprequest物件傳送http請求時(xhr請求),必須

保證當前頁面和請求的物件是同源的,即協議,網域名稱和埠號要完全一致,否則 瀏覽器就會阻止此跨域請求返回的資料

同源策略:

協議,網域名稱和埠號的完全一致

csrf攻擊:

1.使用者瀏覽並登陸信任**

2.驗證通過在使用者處產生cookie

3.使用者在,沒有退出a或者本地cookie沒有過期狀態下訪問**b

4.b要求訪問站點a,並發出request請求

5.根據b的請求使用者帶著本地cookie訪問**a,從而實現csrf的利用

需求

雖然同源策略可以有效的防止網路上的惡意攻擊,但是在實際開發應用中,

我們往往需要從本站點向第三方站點傳送xhr請求,這就需要有效的解決跨

域問題,

解決方案:

jsonp:只支援get,不支援post請求

**:使用**去避開跨域請求

服務端修改:在服務端頁面新增header限制

headr('access-control-allow-origin:*')//設定所有**訪問

headr('access-control-allow-method:post,get')//設定訪問方式

jsonp原理:

瀏覽器只對xhr(xmlhttprequest)請求有同源請求限制,而對script標籤的src屬性

link標籤的ref屬性和img標籤src屬性沒有這種限制,利用這個漏洞就可以很好的解決跨域請求

jsonp就是利用script標籤的src屬性開發策略來實現,當向第三方站點請求時,我們可以將此請求放在

jquery實現

jquery的ajax方法對jsonp方法進行了封裝,使用jquery提供的方法變得非常簡單

前端:

防禦csrf攻擊:

1.在客戶端頁面增加偽隨機數

2.驗證碼

3.one-time tokens(不同的表單包含乙個不同的偽隨機值)

跨域 jsonp實現

ajax請求受同源策略影響,不允許進行跨域請求,而script標籤src屬性中的鏈結是可以訪問跨域的js指令碼的,利用這個特性,伺服器不再返回json格式的資料,而是返回一段條用某個函式的js 在src中進行了呼叫,實現跨域.src callback functionname script 複製 f...

jsonp實現跨域呼叫

jsonp服務端需要返回的格式 callback 其實就是加個資料的方法呼叫封裝。注意,對於jsonp在return 物件需要為null,否則返回的資料後面會多個,需要返回的資料可以直接printwrite輸出。服務端 示例 suppresswarnings unchecked json seria...

跨域實踐之jsonp實現跨域

jsonp實現跨域是一種十分普遍的方法,它利用的是script標籤裡的src屬性可以跨域請求的功能來實現跨域,那這篇部落格就來實踐一下jsonp這種方法 既然要跨域,那我們先來看下不用jsonp,直接請求的結果 很顯然,由於瀏覽器的同源策略,響應被阻擋了,以至於我們無法獲取到服務端傳來的資料 接下來...