首先我们要知道什么是同源,当两个页面的端口,协议,域名都相等的时候这才叫同源。
那么什么叫同源策略呢?同源策略是浏览器提供的一个安全功能,它限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。(无法发送非同源的ajax,更加准确的说应该是发送了请求但被浏览器拦截了,也就是说浏览器会拦截非同源的请求。)
URL | 是否同源 | 原因 |
https://www.baidu.com | 是 | 同源(协议,域名,端口相同) |
http://www.baidu.com | 否 | 协议不同(http与https) |
http://blog.baidu.com | 否 | 域名不同(www.baidu.com与blog.baidu.com) |
http://blog.baidu.com:7001 | 否 | 端口不通(默认的80与7001端口) |
https://www.baidu.com | 是 | 同源(协议,域名,端口相同) |
那为什么会出现呢?
1.为了防止恶意网页可以获取其他网站的本地数据。
2.为了防止恶意网站iframe其他网站的时候,获取数据。
3.为了防止恶意网站在自已网站有访问其他网站的权利,以免通过cookie免登,拿到数据。
那什么叫跨域呢?
跨域指的是两个 URL 的协议、域名、端口只要其中一个不一致,就会形成跨域。
出现跨域的根本原因 浏览器的同源策略不允许非同源的 URL 之间进行资源的交互。