同源策略几乎是前端面试中几乎必然问到的问题。可是不少同窗对同源策略的理解不够深刻,今天咱们就来聊聊同源策略的问题。
前端
首先按照老规矩,咱们先来提出几个问题:面试
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协议比如是男生,协议不相同不能访问,因此 协议不一样也不算同源。
因此总的来讲,协议,子域,主域,端口任意一个不一样,都不算同源,但并不意味着不算同源就彻底不能访问,这就是跨域的知识,咱们下篇文章再来为你们详细介绍跨域的多种方式。
小伙伴们,大家还想看什么类型、题材的文章?或者在学习前端过程当中有哪些痛点呢?欢迎在图文下方给小渡留言