1: 什么是同源策略
瀏覽器出于安全方面的考慮,只允許與本域下的接口交互。不同源的客戶端腳本在沒有明確授權的情況下,不能讀寫對方的資源。
- 同協議:如都是http,https,file,ssh,mailto,tel
- 同域名(在//后到第一個/之間):
如都是http://abc.com/a 和http://abc.com/b - 同端口:如都是80端口
需要注意的是: 對于當前頁面來說頁面存放的 JS 文件的域不重要,重要的是加載該 JS 頁面所在什么域
2: 什么是跨域?跨域有幾種實現形式
跨域是破除同源策略的限制,實現不同域下接口交互來獲取數據
跨域一般有4種實現形式
- JSONP(常用)
- CORS
- 降域
- postMessage
3: JSONP 的原理是什么
3: JSONP 的原理是什么
在當前所在html中創建一個srcipt標簽,將src設置為接口地址,服務器那邊以獲取callback中的參數值+要發送的數據以json字符串的形式回應,頁面獲取到數據調用同callback參數值的方法名來展現數據。
4: CORS是什么
CORS是跨域資源共享
它允許瀏覽器向跨源服務器,發出XMLHttpRequest請求,從而克服了AJAX只能同源使用的限制
實現方式是,當你使用XMLHttpRequest發送請求時,瀏覽器發現該請求不符合同源策略,會給該請求加一個請求頭:Origin,后臺進行一系列處理,如果確定接受請求則在返回結果中加入一個響應頭:Access-Control-Allow-Origin; 瀏覽器判斷該相應頭中是否包含Origin 的值,如果有則瀏覽器會處理響應,我們就可以拿到響應數據,如果不包含瀏覽器直接駁回,這時我們無法拿到響應數據
5:演示三種以上跨域的解決方式
https://github.com/MasterGaoJin/pratice/tree/master/jinjie13