同源策略
同源策略是瀏覽器故意設(shè)計的一個功能限制。
一、同源的定義
1. 源
源 = 協(xié)議 + 域名 + 端口號
如果兩個 URL 的 協(xié)議、域名、端口號 都完全一致,那么這兩個url就是同源的
二、同源策略定義
1. 瀏覽器規(guī)定
如果JS運行在源A里,那么久只能獲取源A的數(shù)據(jù),不能獲取源B的數(shù)據(jù),即 不允許跨域
注意: 這是瀏覽器的功能,瀏覽器故意這樣設(shè)計的
(因為它要保護用戶隱私)
同源策略的總結(jié):不同源的頁面之間,不準互相訪問數(shù)據(jù)
跨域
一、什么是跨域
跨域 是由于瀏覽器不能獲取其他網(wǎng)站的數(shù)據(jù),產(chǎn)生這一切的原因就是因為瀏覽器的 同源策略 。同源策略 限制的行為:
(1)Cookie、LocalStorage 和 IndexDB 無法讀取
(2)DOM 和 JS 對象無法獲取
(3)Ajax請求發(fā)送不出去
二、解決跨域
1. CORS跨域
聲明需要共享的語法:Access-Control-Allow-Origin:你的需要允許的域名
(注意:是在node中聲明)
MDN:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS#%E7%AE%80%E5%8D%95%E8%AF%B7%E6%B1%82
例:
response.setHeader('Access-Control-Allow-Origin',‘域名’)
如果需要允許兩個網(wǎng)站,你就通過
console.log(request.headers['referer'])
讀取到它來自哪個網(wǎng)站,你就在域名中寫哪個網(wǎng)站
2. JSONP 跨域
先將提供的數(shù)據(jù)寫到一個 js 文件當中。然后需求方一方引用該 js , js 文件執(zhí)行函數(shù),這樣需求方就可以通過事先寫好的函數(shù),獲取到數(shù)據(jù),并且,這個實現(xiàn)寫好的函數(shù),就是一個很典型的回調(diào)。