同源
同源指的是 两个页面的协议,域名和端口都相同
那么这两个页面具有相同的源
协议指的是 http,https(目前用的最多的) 还有文件协议file://
域名指的是例如 baidu.com 之类的 域名是需要购买的
端口号指的是域名后面的 ‘:+数字’
http的默认值是80 https的默认值是443
同源策略
同源策略指的是浏览器提供的一个安全功能
MDN0官方给的概念是 同源策略限制了从同一个源加载的文档或者是脚本如何与来自另外一个源的资源进行交互 这是一个用于隔离潜在的恶意文件的重要安全机制
简单的说就是 如果不是同源的网站 他们就不可以互动
跨域
只要不是同源的两个网站 都是跨域
出现跨域的根本原因就是同源策略不允许非同源的url进行资源的交互
浏览器对跨域请求的拦截
浏览器被允许发起跨域请求 但是跨域请求回来的数据 都会被浏览器拦截 无法被页面获取
如何实现跨域数据请求
虽然说同源策略有助于保护web安全 但是总会有需要跨域数据请求的时候
目前主流的解决方法分别是JSONP和CORS
JSONP出现的较早 所以兼容性比较好 这可以说是民间发明的方法 属于是被迫想出来的解决方案 缺点是只支持GET请求 不支持POST请求
CORS出现的比较晚 是W3C的标准 可以说是官方给出的跨域Ajax的根本解决方法 支持GET和POST请求 但是也有缺点 那就是万恶的兼容性问题