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

Strapi V4中因Access-Control-Allow-Origin头重复设置引发CORS错误

解决Strapi 4.15.5中Access-Control-Allow-Origin重复的CORS错误

针对你遇到的Access-Control-Allow-Origin响应头重复导致的CORS错误,可按以下步骤排查解决:

1. 确认中间件配置未重复加载strapi::cors

打开config/middlewares.js,检查文件中是否仅存在一处strapi::cors配置。重复添加该中间件会导致多次设置CORS头,引发重复值问题。

正确的中间件配置示例:

export default [
  'strapi::errors',
  {
    name: 'strapi::security',
    config: {
      contentSecurityPolicy: {
        useDefaults: true,
        directives: {
          'connect-src': ["'self'", 'https:'],
        },
      },
    },
  },
  {
    name: 'strapi::cors',
    config: {
      origin: 'https://xxx.yyy.com',
    },
  },
  'strapi::poweredBy',
  'strapi::logger',
  'strapi::query',
  'strapi::body',
  'strapi::session',
  'strapi::favicon',
  'strapi::public',
];

2. 检查反向代理(如Nginx)是否额外设置CORS头

如果你的Strapi服务通过Nginx等反向代理部署,需确认代理配置中是否手动添加了Access-Control-Allow-Origin头。若代理层和Strapi同时设置该头,就会出现重复值。

处理方式:要么删除代理配置中的CORS头(交由Strapi统一处理),要么在代理层统一配置所有CORS规则,同时移除Strapi中的strapi::cors配置。

3. 排查自定义中间件或插件的冲突

  • 检查src/middlewares/目录下的自定义中间件,确认没有手动添加Access-Control-Allow-Origin响应头的代码。
  • 排查已安装的Strapi插件,部分第三方插件可能自带CORS逻辑,与官方strapi::cors中间件冲突。

4. 清除缓存并重启服务

执行以下操作确保配置生效:

npm run build
npm run develop # 生产环境可替换为对应的启动命令

旧缓存可能导致修改后的配置未正确加载,引发重复头问题。

5. 验证响应头来源

通过浏览器开发者工具的Network面板,查看请求的响应头详情:

  • 确认两个重复的Access-Control-Allow-Origin头的具体来源,对比不同配置下的变化,定位是Strapi内部还是代理层的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:42:55