1.什么是同源策略
同源策略:
瀏覽器處于安全方面的考慮纹磺,只允許與本域下的接口交互,不同源的客戶端腳本在沒(méi)有明確授權(quán)的情況下亮曹,不能讀取對(duì)方的資源橄杨。
同協(xié)議:(http、file照卦、shh式矫、https、tel役耕、ftp...)以上協(xié)議必須相同采转;
同域名:第一個(gè) // 到第二個(gè) / 之間的部分必須相同;
同端口:一般為80瞬痘,具體看設(shè)置故慈。
以上三條都相同則為同源
舉例:
a.b.com,a.b.com/a.html 同源,域相同框全。
b.com, a.b.com 不同源察绷,域不同,前者的域更”窄“津辩。
a.b.com:8080, a.b.com/3000 不同源拆撼,端口不同。
http://a.b.com, https://a.b.com 不同源丹泉,協(xié)議不同情萤。
2.什么是跨域?跨域有幾種實(shí)現(xiàn)形式
跨域顧名思義就是突破同源策略的限制摹恨,去不同的域下訪問(wèn)數(shù)據(jù)筋岛。 主要有如下幾種實(shí)現(xiàn)形式:
- jsonp
- CORS:跨域資源共享(Cross-Origin Resource Sharing)
- 降域
- postMessage()
3.JSONP 的原理是什么
- 首先,web服務(wù)器調(diào)用js文件不受是否跨域的影響(而且晒哄,帶有src屬性都可以跨域睁宰,如:img iframe script)
- 所以,JSONP就是依據(jù)這個(gè)特性寝凌,與web服務(wù)器調(diào)用腳本的方式一樣柒傻,來(lái)引入生成動(dòng)態(tài)的js文件,也就是引入在src里面輸入你要的后端文件较木。
- 并且红符,JSONP的一個(gè)要點(diǎn)就是需要向后臺(tái)傳入一個(gè)callback參數(shù),然后服務(wù)器返回的數(shù)據(jù)時(shí)callback函數(shù)會(huì)將數(shù)據(jù)包裹。
4.CORS是什么
CORS(cross origin resource sharing)跨資源共享预侯。
原理:跨域的產(chǎn)生是因?yàn)闉g覽器出于安全方面的考慮致开,只允許與本域下的接口交互。所以如果我們能讓后臺(tái)跨域文件只識(shí)別某些web服務(wù)器的話萎馅,那么就可以進(jìn)行對(duì)接双戳。
方法在后端的返回頭部設(shè)置header=('Access-Control-Allow-Origin',指定網(wǎng)址)
5.根據(jù)視頻里的講解演示三種以上跨域的解決方式
hosts 文件配置
127.0.0.1 www.clark.com
127.0.0.1 www.a.clark.com
127.0.0.1 www.b.clark.com
代碼地址
效果均實(shí)現(xiàn)