浏览器跨域

一、什么是跨域?

要先理解跨域,先理解同源的概念。
1) 同源是指两个uri的协议,域名和端口三者完全一致。

2) 跨域可理解为同源的反义。

二、浏览器为什么要限制跨域?

由于浏览器的Cookie是存储在一起的,浏览器并没有区分。此时如果不限制同源,则会出现CSRF。比如访问你在浏览器里先登陆了银行的网站,银行把一些敏感信息写入了Cookie,之后你访问其他网站时都会携带这个Cookie,若果被恶意网站获取就容易被盗取银行信息。

浏览器厂商Netscape 为了避免出现这种高风险的行为,于是提出同源的安全策略来**限制(不是完全禁止)**跨域的发生。

三、浏览器的同源策略

各大主流浏览器都制定了自己的同源策略实现,主要有以下几类:
1)Same-origin policy for DOM access,使用iframe标签场景。 – 限制比较宽松,一般允许加载;
2)Same-origin policy for XMLHttpRequest,也就是ajax。– 限制比较严格。
3)Same-origin policy for cookies – 限制严格,防止CSRF。

但其中共同点都是同源的限制基本都是针对脚本的(即ajax),而对Html的标签则比较宽松,基本都允许加载(但无法跨域读取)。而常见的JSONP解决跨域的思路也是通过把跨域请求伪装为