什么是跨域问题:
1、前端调用后端接口时,如果不在一个域内,就会出现跨域问题。比如:我们的域名是:http://www.zjhTest01.com 我们却调用http://www.zjhTest02.com域名下的URl 就会出现跨域问题。
为什么会产生跨域问题:
1、浏览器的限制:浏览器考虑到安全问题,当浏览器发现发出的是跨域请求时,会进行校验,校验不通过就会报跨域问题。
2、发出的请求中,只要域名、端口任何一个不一样,该请求就是跨域请求。
3、发出去的请求是XHRHttpRequest请求时(type:xhr)则是跨域请求。如果发出去的请求不是XHRHttpRequest请求,即使发出去的请求不是本域的也不会出现跨域问题。比如使用图片标签<img src="http://www.baidu.com/logo"/>该请求是JSON请求,不是XHR即使请求图片资源的链接不是本域的也不会有跨域问题。
解决思路:
1、解除浏览器限制:可以在请求中指定参数让浏览器不去拦截跨域请求。
2、发出去的请求不是XHR请求,JSONP就是使用该思路去解决跨域问题。
3、服务提供方接口支持跨域请求:请求的响应头中额外增加某些字段来告知浏览器允许跨域调用。
4、调用方:通过代理的方式,比如:从浏览器中发出请求都是A域名的请求,在代理里,把指定的规则下的url转化到B域名,从浏览器看来,就是同一个域名了,就不会出现跨域问题。该解决方式称为:隐藏跨域