同源策略
一、概念
提出问题:什么是同源?
三个相同:协议相同、域名相同、端口相同。
举例:
一个完整的URL可以分为几个部分:比如 https://pan.baidu.com:80其中协议就是https://,域名就是pan.baidu.com,端口就是80
域名还分为主域和子域,
baidu.com就是主域,pan就是子域 比如zhidao.baidu.com和pan.baidu.com他们的主域是相同的,只是属于不同的子域。问题:当然在这里有人就会问他们两个属于同源吗?
很不幸他们两个
不属于同源
https://pan.baidu.com:80和http://pan.baidu.com:80,协议不同,不算同源
https://pan.baidu.com:8080和https://pan.baidu.com:3000,端口不同,不算同源
https://zhidao.baidu.com:80和https://pan.baidu.com:80,域名不同,不算同源
注意: 一般的服务都占用的是默认的80端口,所以我们一般情况下是看不到端口号的。
二、目的
同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。
举例: 设想这样一种情况:A网站是一家银行,用户登录以后,又去浏览其他网站。如果其他网站可以读取A网站的 Cookie,会发生什么?
很显然,如果 Cookie 包含隐私(比如存款总额),这些信息就会泄漏。更可怕的是,Cookie 往往用来保存用户的登录状态,如果用户没有退出登录,其他网站就可以冒充用户,为所欲为。因为浏览器同时还规定,提交表单不受同源政策的限制。 由此可见,"同源政策"是必需的,否则 Cookie 可以共享,互联网就毫无安全可言了。
总结: 协议,子域,主域,端口任意一个不同,都不算同源,但并不意味着不算同源就完全不能访问,这就是跨域资源共享的知识,我后面会为大家详细介绍跨域的多种方式
参考: www.ruanyifeng.com/blog/2016/0…
更多文章请转移:github.com/wangyicong