You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3 + Keycloak + Angular微服务架构中API网关配置安全后仍遇CORS预检401错误的原因咨询

Spring Boot 3 + Keycloak + Angular微服务架构中API网关配置安全后仍遇CORS预检401错误的原因咨询

嘿,我来帮你拆解这个头疼的问题!你说在Spring Boot 3搭建的API网关里配置了Keycloak安全校验后,前端Angular调用后端接口时,触发了CORS预检请求(也就是OPTIONS请求),结果返回401错误,还提示缺少Access-Control-Allow-Origin响应头对吧?

出现这种问题的核心原因通常有这几个:

  • 预检请求被安全拦截器直接拒了:浏览器发起CORS预检请求时,是不会携带Keycloak的Bearer Token的,但你的网关安全配置可能把所有请求都纳入了拦截范围,包括OPTIONS请求。这时候Security模块直接因为没有Token返回401,CORS过滤器根本没机会处理这个请求,自然不会返回跨域相关的响应头。
  • CORS过滤器的执行顺序不对:如果你的自定义CORS Web Filter配置在Spring Security过滤器链之后,那么请求会先走到Security校验环节,OPTIONS请求因为没带Token直接被拦截,CORS过滤器连插手的机会都没有,跨域头也就加不上了。
  • Keycloak资源服务器配置没做特殊豁免:Spring Boot 3里配置spring.security.oauth2.resourceserver.jwt相关参数时,可能没明确放行OPTIONS请求,也没给预检请求设置无需鉴权的规则,导致预检请求直接被鉴权逻辑挡在了门外。

你遇到的具体错误提示是这样的:

Access to fetch at 'http://localhost:9090/api/v1/programs' from origin
'http://localhost:4200' has been blocked by CORS policy: Response to
preflight request doesn't pass access control check: No
'Access-Control-Allow-Origin' header is present on the requested
resource. If an opaque response serves your needs, set the request's
mode to 'no-cors' to fetch the resource with CORS disabled.

备注:内容来源于stack exchange,提问作者Shehan Mario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 08:14:34