跨域整理

220 阅读2分钟

我们为什么要跨域?

是因为浏览器的同源机制引出的跨域操作。

同源又是什么?

域名不同,协议不同,端口不同,都是不同源的。

那浏览器为什么同源?

浏览器通过限制从一个源的资源如何与另一个源的资源进行交互。这是用于隔离恶意文件的重要安全机制。

正确跨域有什么方法?

解决api方式:

jsonp :只能传get方法

空ifream加form :可以传post方法

cros: 分为简单方法和非简单方法

代理:nginx转发

解决dom方式:

postMessage

document.domain

canvas操作跨域图片

引用:思否博客:segmentfault.com/a/119000001…

整体来说,React和Vue等框架出现后,目前前端在代码开发方面的复杂度已经基本得到解决,再加上Node解决前后端分离,前端技术栈本身其实已经比较成熟,因此我认为前端本身的开发技术未来几年应该不会有大的方向变化。 既然前端开发技术栈本身已经比较成熟,那我们看看目前还有哪些制约前端发展瓶颈的,也许这些瓶颈的地方就是后面技术方向突破的地方。

首先是浏览器。虽然浏览器这几年在Chrome的带动下,性能飞速发展,但毕竟其核心原理没有变化,性能始终难以达到原生App的水平,因此这部分我认为是最有可能出现大的变化的,一个可能的方向就是浏览器变成虚拟机,前端代码编译为字节码,通过这种方式来将性能提升一个等级,虽然还是难以达到原生App的水平,但已经能够满足绝大部分应用的性能需求,类似于Java对比C/C++一样。同时,虚拟机还可以直接调用OS提供的各种接口,至于安全问题,其实和现在的App一样可以采取权限申请的方式。 第二个就是统一的DOM树限制了单线程的渲染。理论上来说,一个页面某个时间变化的部分只是集中在一小块区域,没有必要将整个DOM树锁住。因此,一个可能的方向是分区渲染,即将页面划分为几个不同的区域,每个区域有独立的DOM树,独立渲染,那么性能会高很多,类似于App开发中的组件,组件类的运行不影响其它组件,如果需要依赖其它组件,通过组件间消息进行通信。