JSONP_跨域

1、同源策略

同源策略是眾多的安全策略之一,是在web層面上的策略。同源策略規定:
不同域的客戶端腳本在沒有明確授權的情況下,不能讀寫對方的資源,注意關鍵詞:不同域、客戶端腳本、授權、讀寫、資源

  • 不同域:同域指的是要求兩個站點同協議、同域名、同端口,如判斷下列站點與http://www.foo.com是否同域?
https://www.foo.com             不同域(協議不同)
http://team.foo.com             不同域(team子域與www子域不同)
http://foo.com                  不同域(頂級域與www子域不是一個概念)
http://www.foo.com              不同域(端口不同,默認為80端口)
http://www.foo.com/a            同域
  • 客戶端腳本:一般指JavaScript
  • 授權:HTML5標準中關于Ajax跨域訪問的情況,默認情況下是不允許跨域訪問的,只有目標站點(默認http://www.foo.com) 明確的返回HTTP響應頭Access-Control-Allow-Origin:http://www.foo1.com,那么www.foo1.com站點上的客戶端腳本就有權通過Ajax對目標站點(www.foo.com)上的數據進行讀寫操作
  • 讀寫權限:web上的資源很多,有的只有讀權限,有的同時有讀寫權限。如請求頭的Referer只讀,而document.cookie具備讀寫權限,這主要是從安全的角度區分的
    -資源:同源策略中資源指的是客戶端的資源,常見的有HTTP消息頭、DOM樹、瀏覽器存儲等。在同一個域內,客戶端的腳本可以任意讀寫同域內的資源,前提是這個資源是可讀寫的

2、 跨域和跨域有幾種實現形式?

跨域:允許不同域的接口進行交互
實現形式:JSOP、CORS、降域、postMessage

3、 JSONP 的原理是什么?

客戶端
服務端
  • 1、首先在客戶端腳本中定義一個數據處理函數fun",
  • 2、在上述定義的腳本中使用DOM創建script標簽,src的地址執行后端接口,最后加參數callback=fun",
  • 3、服務端在收到請求,解析參數,返回fun(data)字符串",
  • 4、function(data)會放在script標簽作為js執行,此時調用fun函數,將data作為參數"

4、 CORS

在HTML5標準中關于Ajax跨域訪問的情況,默認情況下是不允許跨域訪問的,只有目標站點(默認http://www.foo.com) 明確的返回HTTP響應頭Access-Control-Allow-Origin:http://www.foo1.com,那么www.foo1.com站點上的客戶端腳本就有權通過Ajax對目標站點(www.foo.com)上的數據進行讀寫操作

5、總結跨域解決方式

https://github.com/joinmouse/hello-world

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 什么是同源策略 同源政策(same-origin policy)是指同域名(或ip),同端口,同協議視為同一個域,...
    小囧兔閱讀 548評論 0 1
  • JavaScript是一種在Web開發中經常使用的前端動態腳本技術。在JavaScript中,有一個很重要的...
    西瓜w閱讀 1,784評論 0 1
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,933評論 18 139
  • 1.什么是同源策略瀏覽器出于安全方面的考慮,只允許與本域下的接口交互。不同源的客戶端腳本在沒有明確授權的情況下,不...
    24_Magic閱讀 511評論 0 0
  • 題目1: 什么是同源策略 同源策略(Same Origin Policy): 瀏覽器出于安全方面的考慮, 只允許與...
    cctosuper閱讀 246評論 0 1