背景
对于一般大型公司,会涉及有很多的子域名,例如XX1.zd.com, XX2.zd.com, XX3.zd.com,现有的spring技术体系里,跨域仅支持*通配全部,或者配置完整的origin路径。那么对于子域名过多的场景,就非常的不便捷。在此通过扩展源码能力,对这个功能进行了很好的支持。这里做下记录,同时也给有需要的同学提供一下参考。(springmvc的方式类似,如大家遇到问题欢迎找我交流)
原理
springcloud-gateway基于spring5新集成的webflux体系,整体实现基于reactive, 相关源码均在reactive包下。 通过配置进一步发现核心类是CorsProcessor,实现类是DefaultCorsProcessor
可以看到实际这里是拿配置的allowOrigins中的值和requestOrigin做忽略大小写的equal判断。所以我们仅需要对这块的代码进行重写即可。 即这里可以重写config中的checkOrigin方法ÿ