跨域 、同源 、CORS、JSONP

同源策略

同源策略是瀏覽器故意設(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)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容