同源策略幾乎是前端面試中幾乎必然問到的問題脑题。但是很多同學(xué)對同源策略的理解不夠深入刑峡,今天我們就來聊聊同源策略的問題。
首先按照老規(guī)矩瓤球,我們先來提出幾個(gè)問題:
1. 什么是同源?
2. 為什么要有同源策略敏弃?
一句話解釋同源就是:相同協(xié)議卦羡,相同域名,相同端口稱為同源麦到。
下面我們還是用鄧哥抄作業(yè)的故事來講述什么是同源策略绿饵。
話說鄧哥大學(xué)時(shí)候號稱比較“浪漫~”,因?yàn)楹堋袄恕逼康撸埠堋奥蹦馍蕖!2角濉`嚫缑刻於紝懖煌曜鳂I(yè)要门,只能每天到學(xué)校去抄同學(xué)的。如果說學(xué)霸在知識的海洋里開快艇廓啊,那么鄧哥只能在知識的海洋里喂鯊魚欢搜。。
有一天鄧哥早上匆匆忙忙進(jìn)到教室谴轮,向綠茶妹妹(歐陽綠茶)借了數(shù)學(xué)作業(yè)來抄炒瘟。
這時(shí)鄧哥就相當(dāng)于是瀏覽器,一個(gè)url我們可以分為幾個(gè)部分第步,比如http://pan.baidu.com:80疮装。綠茶妹妹就像是一個(gè)服務(wù)程序,綠茶妹妹姓歐陽粘都,歐陽是姓廓推,就相當(dāng)于url中的主域(baidu.com),綠茶是名翩隧,就像是上面url中的子域(pan)樊展,一個(gè)主機(jī)可以有很多端口,就相當(dāng)于是很多科目的作業(yè)堆生,數(shù)學(xué)作業(yè)英語作業(yè)之類的专缠,由于一般的服務(wù)都占用的是默認(rèn)的80端口,所以我們一般情況下是看不到端口號的淑仆。
綠茶妹妹還有個(gè)親妹妹涝婉,叫紅茶妹妹(歐陽紅茶)~
紅茶妹妹和綠茶妹妹是一家的~所以肯定都姓歐陽,只是名字不同蔗怠,就像是pan.baidu.com(百度網(wǎng)盤)和zhidao.baidu.com(百度知道)的關(guān)系墩弯。
這天紅茶妹妹也沒寫完作業(yè),也想抄綠茶妹妹的作業(yè)寞射,因?yàn)樽鳂I(yè)在鄧哥這里最住,所以來向鄧哥來借綠茶妹妹的作業(yè)。但是鄧哥不敢把作業(yè)借給別人怠惶,所以鄧哥沒有借給紅茶妹妹涨缚。
雖然紅茶妹妹和綠茶妹妹都姓歐陽,但是畢竟不是同一個(gè)人策治,這就像是http://pan.baidu.com和http://zhidao.baidu.com雖然都是百度旗下的脓魏,但是瀏覽器并不會(huì)直接允許http://zhidao.baidu.com訪問http://pan.baidu.com的內(nèi)容。這就說明子域不同不算同源通惫。
但是畢竟是一家的茂翔,其實(shí)紅茶妹妹勸說鄧哥一陣也是可以借到作業(yè)的~
雖然瀏覽器認(rèn)為http://pan.baidu.com和http://zhidao.baidu.com不是同域,但是畢竟都是一家的履腋,所以在瀏覽器端進(jìn)行一些設(shè)置之后珊燎,還是可以訪問到的惭嚣。這是跨域的一種方式,我們下一篇文章來詳細(xì)介紹跨域的多種方式悔政。
由于數(shù)學(xué)老師查作業(yè)查的嚴(yán)晚吞,英語老師查作業(yè)查的松。所以綠茶妹妹提前和鄧哥說了谋国,英語作業(yè)可以借給別人槽地,但是數(shù)學(xué)作業(yè)絕對不可以。
雖然不同的作業(yè)(端口)都是同一個(gè)域下的芦瘾,但是同源策略不一定相同捌蚊。所以就會(huì)出現(xiàn),不同端口不算同源的現(xiàn)象近弟∶逶悖可能80端口不允許別人訪問,但是90端口就有可能允許任何人訪問祷愉。這個(gè)誰能訪問溺拱,可以是由服務(wù)端(綠茶妹妹)設(shè)置的,這也是跨域的一種方式谣辞,我們后續(xù)詳細(xì)的來講迫摔。
綠茶妹妹比較心細(xì),雖然英語作業(yè)可以隨便借給別人泥从,但是綠茶妹妹怕借給其他男生會(huì)把作業(yè)本弄壞句占,所以綠茶妹妹跟鄧哥說,英語作業(yè)只能借給女生躯嫉,不能借給男生~
這時(shí)候纱烘,https協(xié)議就好比是女生,http協(xié)議好比是男生祈餐,協(xié)議不相同不能訪問擂啥,所以協(xié)議不同也不算同源。
所以總的來說帆阳,協(xié)議哺壶,子域,主域蜒谤,端口任意一個(gè)不同山宾,都不算同源,但并不意味著不算同源就完全不能訪問鳍徽,這就是跨域的知識资锰,我們下篇文章再來為大家詳細(xì)介紹跨域的多種方式。