文章 548
评论 5
浏览 173081
Spring Cloud Gateway CORS 配置混乱:多服务重复定义跨域易冲突?网关统一拦截+动态响应头注入

Spring Cloud Gateway CORS 配置混乱:多服务重复定义跨域易冲突?网关统一拦截+动态响应头注入

公司有 30 多个微服务,每个服务的后端开发都自己配了一份 CORS。结果前端调接口时,有的服务返回了 Access-Control-Allow-Origin,有的没返回,有的返回了 *,有的返回了具体域名。浏览器一看响应头不一致——有的 OPTIONS 预检过了,有的直接被 CORS 策略拦住,前端报了满屏的 blocked by CORS policy。查了半天才发现是服务 A 配了 allowedOrigins(*, example.com),服务 B 配了 allowedOrigins(example.com),服务 C 根本没配。 CORS 应该是网关的活,不是每个微服务的活。所有跨域请求都先到网关,网关统一返回 CORS 响应头,后端服务根本不应该感知到 CORS 的存在。 为什么 CORS 不应该散落在微服务里 CORS 本质是浏览器的一个安全机制——它确保一个域名的脚本不能随意访问另一个域名的资源。网关是所有请求的入口,天然适合做 CORS 的"守门员"。 散落在各个微服务的问题: 配置不一致 —— 30 个服务 30 份 CORS 配置,改一个域名要改 30 个....

服务端开发博客:后端架构、高并发、性能优化与微服务实战教程