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

如何使用fastify-cors与Node.js配置多URL的CORS允许源

使用fastify-cors配置多个CORS允许源(Node.js)

要将你的CORS配置从通配符*改为指定多个允许的源,需注意两个核心要点:credentials: true时不能使用通配符,且允许的源必须包含完整协议(http/https)。以下是两种可行的配置方案:

方案一:直接传入源列表

将补全协议后的URL数组直接赋值给origin字段,fastify-cors会自动校验请求的Origin是否在列表内:

const urls = ["https://example1.com", "https://exam.com"];
const cors = require("fastify-cors");

// 注册CORS插件
fastify.register(cors, {
  origin: urls,
  methods: ['GET', 'POST'],
  credentials: true
});

方案二:动态验证源(适配复杂场景)

如果需要更灵活的校验逻辑(比如允许子域名、本地开发环境),可以使用函数形式的origin配置:

const urls = ["https://example1.com", "https://exam.com"];
const cors = require("fastify-cors");

// 注册CORS插件
fastify.register(cors, {
  origin: (origin, callback) => {
    // 允许无Origin的请求(如curl)或列表内的合法源
    // 可选:添加本地开发环境判断,例如 origin.startsWith('http://localhost')
    if (!origin || urls.includes(origin)) {
      callback(null, true);
    } else {
      callback(new Error("Not allowed by CORS"));
    }
  },
  methods: ['GET', 'POST'],
  credentials: true
});

关键注意事项

  • 必须给URL加上完整的http://或https://,浏览器发送的Origin请求头包含协议,仅写域名无法匹配。
  • 当credentials: true时,浏览器禁止使用通配符*作为允许源,必须指定具体源列表或动态校验逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:45:25