跨域问题
1,跨域是前端工程师必备的技能点,后端开发人员也需要知道。
2,本篇博客提供基本的思路,面试的时候可以参考的一个思路。
什么是跨域
协议、域名、端口任意不同,就是不同域。
什么是跨域问题
浏览器为了安全,对js进行跨域访问资源的时候做了一些限定。
-
js可以通过跨域请求返回一个js。
-
js不能跨域请求json数据,但是这个在分布式系统是非常常见的需求。
怎么解决
解决方案好多好多,我们课程里面讲解了几种,开发过程中用jsonp或者cros方式即可。
1. 原生方式
看懂原生方式,就理解jsonp的原理了。
前端
后台
返回如下格式的数据
2. ajax的jsonp方式
前端
后台
返回的真实数据,需要拼接为一个方法的参数。
3. cros方式
是什么
CORS是"跨域资源共享"(Cross-origin resource sharing)。CORS需要浏览器和服务器同时支持。
允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
实现CORS通信的关键是服务器。
前端请求
无需处理
后台返回
添加2个请求头
4. spring mvc对cros的支持
前端
无需处理
后台
通过注解,替换在reponse中添加响应头的方式。
5. 更多方式
参考