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

Strapi v4自定义CORS配置失败,如何限制仅指定URL可访问?

环境信息

  • Strapi版本: v4
  • Node版本: 16
  • NPM版本: 6.14.16
  • Yarn版本: 1.22.19

我试了两种配置CORS的方法都没效果,现在还是能从localhost:3000发起请求,这不是我要的结果。我只想限制几个指定URL才能访问我的Strapi服务,翻官方文档没找到明确的配置方法,求帮忙。

已尝试的操作

  1. 在config/server.js中配置:
settings: {
  cors: {
    enabled: false,
    origin: ["http://test.com"],
  },
},
  1. 在config/middleware.js中配置:
{ name: "stapi::cors", config: { origin: ["http://test.com"] } },

正确配置方案

你之前的配置有两个关键错误,这才导致限制没生效:

  1. config/server.js里把cors.enabled设为false会直接关闭CORS校验,localhost自然能随便访问,必须改成true。
  2. config/middleware.js里的中间件名称写错了,是strapi::cors不是stapi::cors。

下面是两种正确的配置方式,选一种就行:

方式一:修改config/server.js

module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  app: {
    keys: env.array('APP_KEYS'),
  },
  settings: {
    cors: {
      enabled: true, // 必须开启校验
      origin: ["http://test.com", "https://your-second-domain.com"], // 填入需要允许的所有URL
      credentials: true, // 如果前端需要携带Cookie,就开这个,可选
    },
  },
});

方式二:修改config/middleware.js

module.exports = [
  // 保留其他默认中间件,只修改cors部分
  {
    name: 'strapi::cors',
    config: {
      origin: ["http://test.com", "https://your-second-domain.com"],
      credentials: true,
    },
  },
  // 其他中间件...
];

重要提示

  • 改完配置一定要重启Strapi服务,不然不会生效。
  • 如果需要区分开发/生产环境,可以对应修改config/env/development/server.js或config/env/production/server.js。
  • 允许的URL要写完整,包括http/https协议,不能只写域名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:58:33