同源策略

999 阅读2分钟

同源策略

一、概念

提出问题:什么是同源?

三个相同:协议相同域名相同端口相同

举例:

一个完整的URL可以分为几个部分:比如 https://pan.baidu.com:80其中协议就是https://域名就是pan.baidu.com端口就是80

域名还分为主域子域baidu.com就是主域pan就是子域 比如zhidao.baidu.compan.baidu.com他们的主域是相同的,只是属于不同的子域

问题:当然在这里有人就会问他们两个属于同源吗?

很不幸他们两个不属于同源

https://pan.baidu.com:80http://pan.baidu.com:80,协议不同,不算同源

https://pan.baidu.com:8080https://pan.baidu.com:3000,端口不同,不算同源

https://zhidao.baidu.com:80https://pan.baidu.com:80,域名不同,不算同源


注意: 一般的服务都占用的是默认的80端口,所以我们一般情况下是看不到端口号的。

二、目的

同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。

举例: 设想这样一种情况:A网站是一家银行,用户登录以后,又去浏览其他网站。如果其他网站可以读取A网站的 Cookie,会发生什么?

很显然,如果 Cookie 包含隐私(比如存款总额),这些信息就会泄漏。更可怕的是,Cookie 往往用来保存用户的登录状态,如果用户没有退出登录,其他网站就可以冒充用户,为所欲为。因为浏览器同时还规定,提交表单不受同源政策的限制。 由此可见,"同源政策"是必需的,否则 Cookie 可以共享,互联网就毫无安全可言了。


总结: 协议子域主域端口任意一个不同,都不算同源,但并不意味着不算同源就完全不能访问,这就是跨域资源共享的知识,我后面会为大家详细介绍跨域的多种方式

参考: www.ruanyifeng.com/blog/2016/0…

更多文章请转移:github.com/wangyicong