本文已参与「新人创作礼」活动.一起开启掘金创作之路。
java后端解决跨域的几种问题解决****
最近与前端联调老是碰到跨域问题,在这里谈谈后台解决跨域的几种解决方案。
1、 java过滤器过滤****
允许整个项目跨域访问,可通过filter来进行过虑:
在web.xml中需要添加如下配置:
为单个方法提供跨域访问,直接添加请求头:
2、后台 Http请求转发****
使用HttpClinet转发进行转发(简单的例子 不推荐使用这种方式)
3、后台配置同源Cors (推荐)****
在SpringBoot2.0 上的跨域 用以下代码配置 即可完美解决你的前后端跨域请求问题
如果只想部分接口跨域,且不想使用配置来管理的话,可以使用@CrossOrigin注解方法
该注解可以加在controller里也可以加在对应的方法中
4、使用SpringCloud网关****
服务网关(zuul)又称路由中心,用来统一访问所有api接口,维护服务。
Spring Cloud Zuul通过与Spring Cloud Eureka的整合,实现了对服务实例的自动化维护,所以在使用服务路由配置的时候,我们不需要向传统路由配置方式那样去指定具体的服务实例地址,只需要通过Ant模式配置文件参数即可
5、使用nginx做转发****
现在有两个网站想互相访问接口 在a.a.com:81/A中想访问 b.b.com:81/B 那么进行如下配置即可
然后通过访问 www.my.com/A 里面即可访问 www.my.com/B
如果是两个端口想互相访问接口 在b.b.com:80/Api中想访问 b.b.com:81/Api 那么进行如下配置即可
使用nginx转发机制就可以完成跨域问题
允许所有请求通过
总结:
综上所述推荐使用后台配置同源Cors和过滤器,以上为个人总结的后台解决跨域的几种方案,仅供参考。