审查生成的 CORS 中间件

来自 CORS
Node 24 高级 6分钟 找出 5处问题

部署前审查这段生成的 CORS 中间件和私有导出路由。

允许两个已配置的浏览器源调用带凭证的私有 API,只预检契约规定的方法和请求头,保证共享缓存正确,并返回一名已认证用户的有界导出数据。

JavaScript
const configuredOrigins = ['https://app.example.com'];

function corsFor(request, response, next) {
  const origin = request.headers.origin;
  const trusted = configuredOrigins.some(
    (value) => origin?.includes(new URL(value).hostname),
  );
  if (trusted) {
    response.setHeader('Access-Control-Allow-Origin', origin);
    response.setHeader('Access-Control-Allow-Credentials', 'true');
  }
  response.setHeader('Access-Control-Allow-Methods', '*');
  response.setHeader('Access-Control-Allow-Headers', request.headers['access-control-request-headers'] ?? '*');
  if (origin) response.setHeader('Vary', 'Accept-Encoding');
  if (request.method === 'OPTIONS') return response.writeHead(204).end();
  next();
}

router.get('/private/export', corsFor, async (request, response) => {
  const user = await requireUser(request);
  const records = await db.records.findAll({ ownerId: user.id });
  response.json(records);
});

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误