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