×

浏览器跨域详解

96
Zero_rd
2017.09.21 18:31* 字数 420

什么是跨域?

通俗的说,跨域就是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的。

  • 什么是浏览器同源策略?

同源策略是由Netscape提出的著名安全策略,是浏览器最核心、基本的安全功能。
它限制了一个源(origin)中加载文本或者脚本与来自其他源(origin)中资源的交互方式,所谓的同源就是指协议域名端口相同。即:

location.protocol   // 协议
location.host       // 域名
location.port       // 端口

注意:这里的域是js所在的页面的域名地址,而非js存放的服务器域名地址。

  • 同源策略分类
    • DOM 同源策略:禁止对不同源页面DOM进行操作。主要场景是iframe跨域访问。

    • XmlHttpRequest 同源策略:禁止使用XHR对象向不同源的服务器地址发起HTTP请求。

为什么要有跨域限制

跨域限制主要是为了安全考虑。

AJAX同源策略主要用来防止CSRF(Cross-site request forgery)攻击,比如模拟其他页面的ajax请求,从而获取数据。

DOM同源策略也一样,如果iframe可以跨域访问,则可以在页面中嵌入其他网站的iframe,模拟其他网站,截取用户输入的用户名密码等。

解决跨域的方式

  • DOM 同源策略造成的跨域

  • XmlHttpRequest 同源策略造成的跨域

    • 关闭浏览器同源策略
    • jsonp
    • CROS跨域资源共享
    • 代理
    • web sockets
javaScript
Web note ad 1