同源策略
在说跨域之前,先来了解一下“同源策略”
什么是源?
源=协议+域名+端口号。
如果两个url的协议、域名、端口号完全一致,那么这两个url就是同源的。
我们可以通过window.origin或location.origin得到当前源。
什么是同源策略?
同源策略:不同源之间的页面不能互相访问数据。
浏览器规定:如果JS运行在源A里,那么就只能获取源A的数据,不能获取 源B的数据,即不允许跨域
假设 wang.com/index.html引用了ergou.com/1.js,那么就说1.js运行在源wang.com里
注意,这和ergou.com没有关系,虽然1.js是从它那里下载的.
所以1.js就只能获取wang.com的数据,这就是浏览器的功能,浏览器就是故意这样设计的。
为什么会有同源策略?
之所以需要使用同源策略就是为了保护用户的隐私。
以微信为例,源为 https://user.weixin.com,假设当前用户已经登录,并且AJAX请求 /friends.json 可以获取用户好友列表。
这个时候黑客来了,他把 https://user-winxin.com分享给你,实际上这是一个钓鱼网站,你点开这个网页,这个网页也请求你的好友列表 https://user.weixin.com/friends.json。
请问,这个时候你的好友列表是不是就被黑客给偷走了?