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

Spring Cloud Gateway使用RewritePath时出现CORS问题求助

解决方案

1. 修复RewritePath路径重写规则

当前的RewritePath=/assessment/, /bff/assessment/仅匹配带末尾斜杠的请求(如/assessment/),对于无斜杠的/assessment或子路径/assessment/detail无法正确重写,导致请求转发到后端错误路径,返回404且缺失CORS响应头。

修改为正则匹配规则,覆盖所有/assessment开头的请求:

filters:
  - RewritePath=/assessment(?<remaining>.*), /bff/assessment${remaining}

2. 由网关统一处理CORS,关闭后端微服务的CORS配置

既然网关已配置全局CORS,后端Micronaut服务的CORS配置可直接关闭,避免响应头冲突:
将微服务配置中的micronaut.server.cors=true改为micronaut.server.cors=false。

网关会在响应中自动添加符合要求的Access-Control-Allow-Origin等CORS头,无需后端重复处理。

3. 单独拦截处理OPTIONS预请求

若上述调整后仍存在问题,可添加专门的路由拦截所有OPTIONS请求,直接由网关返回CORS响应,避免转发到后端:

routes:
  # 放在所有路由最前面,优先匹配OPTIONS请求
  - id: cors-options-handler
    uri: no://op
    predicates:
      - Method=OPTIONS
      - Path=/**
    filters:
      - SetStatus=200
      - AddResponseHeader=Access-Control-Allow-Origin, *
      - AddResponseHeader=Access-Control-Allow-Headers, *
      - AddResponseHeader=Access-Control-Allow-Methods, GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH, TRACE

4. 验证路由顺序

确保cors-options-handler路由排在其他路由之前,保证OPTIONS请求被优先处理。

内容的提问来源于stack exchange,提问作者San Jaisy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:38:11