跨域之一:同源策略和跨域

本節(jié)內(nèi)容:何為跨域?何為同源策略?

  • 跨域:但是在實(shí)際的場(chǎng)景中,又確實(shí)有很多地方需要突破同源策略的限制,也就是我們常說(shuō)的跨域
  • 同源策略:為了保證用戶(hù)信息的安全,防止惡意網(wǎng)站竊取用戶(hù)數(shù)據(jù),同源策略做了很?chē)?yán)格的限制——只允許本域內(nèi)的腳本讀寫(xiě)本域內(nèi)的資源

一、何為跨域?

說(shuō)到跨域,有必要先了解一下同源策略。

1)同源策略

同源策略(Same origin policy)是由 NetScape 公司在1995年提出的一種安全策略;
同源策略只是一個(gè)約定,提出后被各個(gè)瀏覽器廠商采納,并以各自的方式實(shí)現(xiàn)了同源策略。
  • 何為同源策略?
  • 同源策略:是瀏覽器最核心也最基本的安全功能,會(huì)約束瀏覽器的行為;
  • 同源策略會(huì)限制瀏覽器:只允許本域內(nèi)的腳本讀寫(xiě)本域內(nèi)的資源,不允許訪(fǎng)問(wèn)本域外的資源。

  • 為何需要同源策略?
  • 為保證用戶(hù)信息的安全,防止惡意網(wǎng)站竊取用戶(hù)數(shù)據(jù),瀏覽器需要實(shí)現(xiàn)嚴(yán)格限制

  • 例如:我剛登陸了某寶網(wǎng),此時(shí)再去登陸 B 網(wǎng)站,B 網(wǎng)站就可以使用 JS 獲取到我的某寶賬戶(hù)信息,然后它做什么都可以了。

  • 如何判斷是否同源?
  • 判斷要素有三:協(xié)議、域名、端口號(hào);

  • 三者全部一致才視為同源,即屬于同一個(gè)域;否則視為非同源。

  • 限制范圍

在非同源情況下,存在如下受限行為:

  1. 無(wú)法共享 cookie, localStorage, indexDB
  2. 無(wú)法操作彼此的 dom 元素
  3. 無(wú)法發(fā)送 ajax 請(qǐng)求

2)跨域

域(Domain)是Windows網(wǎng)絡(luò)中獨(dú)立運(yùn)行的單位;
域之間相互訪(fǎng)問(wèn)則需要建立信任關(guān)系,信任關(guān)系是連接在域與域之間的橋梁;
當(dāng)一個(gè)域與其他域建立了信任關(guān)系后,2個(gè)域之間不但可以按需要相互進(jìn)行管理,還可以跨網(wǎng)分配文件和打印機(jī)等設(shè)備資源,使不同的域之間實(shí)現(xiàn)網(wǎng)絡(luò)資源的共享與管理.

  • 跨域
  • 跨域
    突破同源策略的限制,在兩個(gè)不同的域之間(非同源頁(yè)面)實(shí)現(xiàn)資源交互。
本域(同源)和跨域是一對(duì),就像國(guó)內(nèi)企業(yè)和跨國(guó)企業(yè),這樣更形象理解跨域概念
  • 跨域分類(lèi)
    1)使用 Ajax 引發(fā)的跨域問(wèn)題
    當(dāng)調(diào)用 Ajax 時(shí):調(diào)用 Ajax 發(fā)送請(qǐng)求的頁(yè)面 所在的域,和被請(qǐng)求頁(yè)面所在的域不一致
    2)類(lèi)似頁(yè)面嵌入 ifream 引起的跨域問(wèn)題
    當(dāng)操作 ifream 內(nèi)引入的元素時(shí):ifream 所屬頁(yè)面的域,和 ifream 引入頁(yè)面的域不一致
自己分的類(lèi),為了方便記憶,剛接觸時(shí)還把它們弄混了
但本質(zhì)都一樣,即:突破同源策略限制,請(qǐng)求域外資源

二、為何需要跨域?

  • 在實(shí)際的場(chǎng)景中,確實(shí)有很多地方需要突破同源策略的限制,也就是我們常說(shuō)的跨域
  • 如果網(wǎng)站足夠簡(jiǎn)單,一個(gè)網(wǎng)頁(yè)搞定,好吧這樣確實(shí)不需要跨域,但更多時(shí)候,我們需要它
  • 例如:
  • 我想要制作一個(gè)天氣預(yù)報(bào)軟件,就需要獲取氣象局的檢測(cè)信息
  • 我想要制作一個(gè)音樂(lè)盒,就需要獲取音樂(lè)信息……

三、跨域?qū)崿F(xiàn)方法?

1. JSONP
2. CORS
3. 降域
4. postMessage

具體的實(shí)現(xiàn)方法,移步到這里!

1. 跨域之二:JSONP 和 CORS
2. 跨域之三:降域 和 postMessage

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

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

  • 跨域問(wèn)題是個(gè)老生常談的問(wèn)題,在WEB開(kāi)發(fā)中會(huì)經(jīng)常聽(tīng)到,但是很多時(shí)候的開(kāi)發(fā)并不涉及跨域問(wèn)題什么的,所以一般也不會(huì)去深...
    __七把刀__閱讀 2,768評(píng)論 0 7
  • 本文先簡(jiǎn)要介紹前端開(kāi)發(fā)中的瀏覽器同源政策;然后在跨域問(wèn)題中,具體介紹跨域ajax請(qǐng)求的應(yīng)用場(chǎng)景與實(shí)現(xiàn)方案。 什么是...
    AlienZHOU閱讀 9,534評(píng)論 4 19
  • 1.什么是同源策略 1.要了解同源策略,我們必須先知道源即orgin 以百度頁(yè)面為例,谷歌瀏覽器打開(kāi)控制臺(tái):輸入l...
    GarenWang閱讀 1,584評(píng)論 2 8
  • 第一次領(lǐng)略“閑”的旨趣,大概是在一篇叫做《湖心亭看雪》的初中課文里?!啊嘧∥骱4笱┤?,湖中人鳥(niǎo)聲俱絕...
    不雕閱讀 543評(píng)論 1 5
  • 找到那個(gè)可以和你攜手走一輩子的人,不易。 昨晚眾望所歸的《翻譯官》落下帷幕,對(duì)于“加菲”cp最后何去何從想必成了大...
    北有顧執(zhí)閱讀 4,115評(píng)論 0 5

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