Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

什么是跨域

往粗了说,就是一个站点的脚本或者文档企图访问另一个站点的资源,这是一种广义的定义。但通常我们说的是狭义的跨域,而狭义的跨域是和同源策略绑定在一起的。

什么是同源策略

同源策略是浏览器的一种安全策略,是为了防止一个源下的资源去访问另一个源下的资源。所谓同源,是指协议+域名+端口相同。

为什么会有跨域

跨域是实实在在存在的,往小了说,前端加载的静态资源可能来自其他域,比如加载css样式或者图片等,当然这种跨域是允许的。同源策略限制的跨域主要有:

  • 一个域读取另一个域的LocalStorage或者Cookie.
  • Dom和Js对象无法获得
  • Ajax请求不能发送。

如果这些行为被允许,这意味着我可以在一个恶意网站里去请求一些正常网站,比如银行,同时还能带上你刚刚在正常网站登录后留下的cookie, 这样我就可以登录了,然后我在恶意网站里对银行网站发起一些给自己转款的请求……

怎么解决跨域

解决方案比较多,作为后端,我用的比较多的有跨域资源共享(CORS)和Nginx反向代理。

Nginx反向代理

因为同源策略是浏览器的操作,而在服务端跨域是可以正常请求的,反向代理原理也就在这里。以Nginx作为服务端,对于前端的跨域请求,以Nginx作为跳板,在Nginx服务端重新去请求,就可以解决跨域了。

评论