
1.什么是同源策略
同domain即域名(或ip),同端口,同協(xié)議視為同一個(gè)域,一個(gè)域內(nèi)的腳本僅僅具有本域內(nèi)的權(quán)限,可以理解為本域腳本只能讀寫本域內(nèi)的資源,而無法訪問其它域的資源。這種安全限制稱為同源策略。
2. 什么是跨域?跨域有幾種實(shí)現(xiàn)形式
跨域是指從一個(gè)域名的網(wǎng)頁去請(qǐng)求另一個(gè)域名的資源。比如從http://www.baidu.com/ 頁面去請(qǐng)求 http://www.google.com 的資源??缬虻膰?yán)格一點(diǎn)的定義是:只要一個(gè)源向另一個(gè) 協(xié)議,域名,端口有任何一個(gè)的不同的源請(qǐng)求資源,就被當(dāng)作是跨域。
跨域?qū)崿F(xiàn)形式:
- JSONP
- CORS:跨域資源共享(Cross-Origin Resource Sharing)
- 降域
- postMessage()
3. JSONP 的原理是什么
JSONP基本思想是,網(wǎng)頁通過添加一個(gè)<script>元素,向服務(wù)器請(qǐng)求JSON數(shù)據(jù),這種做法不受同源政策限制;服務(wù)器收到請(qǐng)求后,將數(shù)據(jù)放在一個(gè)指定名字的回調(diào)函數(shù)里傳回來,之后有例子。
4. CORS是什么
CORS的全稱是Cross-Origin Resources Sharing,它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了AJAX只能同源使用的限制。
原理
<li>CORS需要瀏覽器和服務(wù)器同時(shí)支持。目前,所有瀏覽器都支持該功能,IE瀏覽器不能低于IE10;
<li>整個(gè)CORS通信過程,都是瀏覽器自動(dòng)完成,不需要用戶參與。對(duì)于開發(fā)者來說,CORS通信與同源的AJAX通信沒有差別,代碼完全一樣。瀏覽器一旦發(fā)現(xiàn)AJAX請(qǐng)求跨源,就會(huì)自動(dòng)添加一些附加的頭信息,有時(shí)還會(huì)多出一次附加的請(qǐng)求,但用戶不會(huì)有感覺。
<li>實(shí)現(xiàn)CORS通信的關(guān)鍵是服務(wù)器。只要服務(wù)器實(shí)現(xiàn)了CORS接口,就可以跨源通信。
5.實(shí)現(xiàn)跨域的一些方法
JSONP實(shí)現(xiàn)

CROS實(shí)現(xiàn)

降域?qū)崿F(xiàn)

postMessage實(shí)現(xiàn)

代碼
感謝瓜子觀眾:
版權(quán)歸饑人谷peter和饑人谷所有,若有轉(zhuǎn)載,請(qǐng)注明來源