在现实的开发中,我们经常会遇到页面需要请求另外的一个系统,也是面试时经常会碰到的一个问题,对于这种不是同一个系统下面的访问,我们该如何去做呢?
对于这个问题,给大家解释下跨域的产生原因及解决办法。
一. 为什么会出现跨域?
在讲跨域问题如何解决之前,我们还是先来看看跨域问题是怎么产生的,这样知道了它的由来,我们就好对症下药了。
1. 同源策略
跨域问题的产生,其实是源自浏览器的“同源策略”。
1.1 同源策略的概念
所谓的“同源策略”,最早是由 Netscape公司提出的一个安全策略,后来这就成为了浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策略。
在同源策略中,要求 域名、协议、端口 3部分都要相同!!!
举例来说,http://www.yiyige.com:80/dir/syc.html 这个网址,http是协议,www.yiyige.com是域名,80是端口号(80端口号默认可以省略)。
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
现在我们已经知道了跨域问题的由来,那又该如何解决呢?在前后端分离模式中,跨域问题可以分别由前端和后端两个团队来共同解决。
二. 前端解决方式
JSONP能实现的跨域的原理:
三. 后端解决的方式
当然,以上只是平哥给大家讲解的几种常见解决方案,其实在开发时还有其他解决思路,
相关文章
06.08抢座
了解千锋动态
关注千锋教育服务号
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱