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

Kong Ingress处理OPTIONS请求报CORS错误,React跨域调用失败求助

Kong CORS插件预检错误排查

问题背景

我是Kong新手,正在使用Kong的CORS插件,已在kong.yml中完成所有配置。端点部署成功且可通过Postman正常访问,但不同域名的React UI调用该端点时,出现预检CORS错误,云服务商为Google Cloud Platform。

CORS插件配置(plugins.yaml)

plugins:
- name: cors
  service: my-service-name
  protocols: 
     - grpc
     - grpcs
     - http
     - https
  config:
    origins:
      - '*'
    headers:
      - Origin
      - Authorization
      - X-Requested-With
      - Content-Type
    methods:
      - GET
      - PUT
      - PATCH
      - POST
      - DELETE
      - OPTIONS
    max_age: 3600
    credentials: true
    preflight_continue: true
  enabled: true

已尝试操作

  • 将preflight_continue设为true和false
  • 添加不同请求头
    以上操作均无效

报错详情

Access to XMLHttpRequest at 'https://my_Kong_url' from origin 'https://my_react_server' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
POST 'https://my_kong_url' net::ERR_FAILED

客户端代码(React)

fetch(<url>, <body>)

排查与解决建议

  1. 确认插件绑定对象是否正确
    检查插件是否确实关联到目标服务my-service-name,若服务级绑定未生效,尝试将插件绑定到具体路由上测试。

  2. 修复credentials与origins的冲突
    当credentials: true时,origins不能设为*,浏览器会直接拒绝该配置。将origins改为你的React域名:

config:
  origins:
    - 'https://my_react_server'
  # 其余配置保持不变
  1. 验证Kong是否处理OPTIONS请求
    用curl手动发送OPTIONS请求,检查响应头是否包含CORS相关字段:
curl -X OPTIONS https://my_Kong_url -H "Origin: https://my_react_server" -I

若响应头无Access-Control-Allow-Origin,说明插件未生效,需重启Kong服务确保配置加载。

  1. 排查GCP层拦截
    若Kong前端有GCP负载均衡,确认其未拦截OPTIONS请求;同时检查GCP防火墙规则,确保允许OPTIONS请求通过。

  2. 修正客户端fetch配置
    开启credentials: true后,客户端请求需携带credentials参数:

fetch(<url>, {
  method: 'POST',
  credentials: 'include',
  body: <your-body>,
  headers: {
    'Content-Type': 'application/json' // 根据实际请求调整
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:15:23