同源策略幾乎是前端面試中幾乎必然問到的問題。可是不少同窗對同源策略的理解不夠深刻,今天咱們就來聊聊同源策略的問題。
前端
首先按照老規矩,咱們先來提出幾個問題:面試
1. 什麼是同源?跨域
2. 爲何要有同源策略?瀏覽器
一句話解釋同源就是:相同協議,相同域名,相同端口稱爲同源。學習
下面咱們仍是用鄧哥抄做業的故事來說述什麼是同源策略。url
話說鄧哥大學時候號稱比較「浪漫~」,由於很「浪」,也很「慢」。。。鄧哥天天都寫不完做業,只能天天到學校去抄同窗的。若是說學霸在知識的海洋裏開快艇,那麼鄧哥只能在知識的海洋裏喂鯊魚。。orm
有一天鄧哥早上匆匆忙忙進到教室,向綠茶妹妹(歐陽綠茶)借了數學做業來抄。cdn
這時鄧哥就至關因而瀏覽器,一個url咱們能夠分爲幾個部分,好比http://pan.baidu.com:80。綠茶妹妹就像是一個服務程序,綠茶妹妹姓歐陽, 歐陽是姓,就至關於url中的主域(baidu.com), 綠茶是名,就像是上面url中的子域(pan),一個主機能夠有不少端口,就至關因而不少科目的做業,數學做業英語做業之類的,因爲通常的服務都佔用的是默認的80端口,因此咱們通常狀況下是看不到端口號的。
綠茶妹妹還有個親妹妹,叫紅茶妹妹(歐陽紅茶)~blog
紅茶妹妹和綠茶妹妹是一家的~因此確定都姓歐陽,只是名字不一樣,就像是pan.baidu.com(百度網盤)和zhidao.baidu.com(百度知道)的關係。
這天紅茶妹妹也沒寫完做業,也想抄綠茶妹妹的做業,由於做業在鄧哥這裏,因此來向鄧哥來借綠茶妹妹的做業。可是鄧哥不敢把做業借給別人,因此鄧哥沒有借給紅茶妹妹。數學
雖然紅茶妹妹和綠茶妹妹都姓歐陽,可是畢竟不是同一我的,這就像是pan.baidu.com和zhidao.baidu.com雖然都是百度旗下的,可是瀏覽器並不會直接容許zhidao.baidu.com訪問pan.baidu.com的內容。這就說明 子域不一樣不算同源。
可是畢竟是一家的,其實紅茶妹妹勸說鄧哥一陣也是能夠借到做業的~
雖然瀏覽器認爲pan.baidu.com和zhidao.baidu.com不是同域,可是畢竟都是一家的,因此在瀏覽器端進行一些設置以後,仍是能夠訪問到的。這是跨域的一種方式,咱們下一篇文章來詳細介紹跨域的多種方式。
因爲數學老師查做業查的嚴,英語老師查做業查的鬆。因此綠茶妹妹提早和鄧哥說了,英語做業能夠借給別人,可是數學做業絕對不能夠。
雖然不一樣的做業(端口)都是 同一個域 下的,可是 同源策略不必定相同。因此就會出現,不一樣端口不算同源的現象。可能80端口不容許別人訪問,可是90端口就有可能容許任何人訪問。這個誰能訪問,能夠是由服務端(綠茶妹妹)設置的,這也是跨域的一種方式,咱們後續詳細的來說。
綠茶妹妹比較心細,雖然英語做業能夠隨便借給別人,可是綠茶妹妹怕借給其餘男生會把做業本弄壞,因此綠茶妹妹跟鄧哥說,英語做業只能借給女生,不能借給男生~
這時候,https協議就比如是女生,http協議比如是男生,協議不相同不能訪問,因此 協議不一樣也不算同源。
因此總的來講,協議,子域,主域,端口任意一個不一樣,都不算同源,但並不意味着不算同源就徹底不能訪問,這就是跨域的知識,咱們下篇文章再來爲你們詳細介紹跨域的多種方式。
小夥伴們,大家還想看什麼類型、題材的文章?或者在學習前端過程當中有哪些痛點呢?歡迎在圖文下方給小渡留言