【问题标题】:Enabling CORS On Individual Endpoints在单个端点上启用 CORS
【发布时间】:2021-04-09 05:10:04
【问题描述】:

我有一个 rest API,它有许多端点来获取和发布数据。我想知道是否可以更改特定端点允许与之交互的来源。您可以在下面看到我在整个应用程序中启用了标准 CORS:

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Headers', '*');
  res.header('Access-Control-Allow-Origin', '*');
  next();
});

但我希望能够更改各个端点的 CORS 属性:

app.get('/api/blocks/length', (req, res) => {
  res.json(blockchain.chain.length);
});

如何做到这一点?一些洞察力对我来说意味着整个世界。

【问题讨论】:

  • const cors = require('cors'); app.get('/api/blocks/length', cors(), (req, res) => {});

标签: javascript node.js api cors rest


【解决方案1】:

您传递给app.use 的函数是一个中间件函数。让我们把它分解成一口大小的组件。

const cors_middleware = (req, res, next) => {
  res.header('Access-Control-Allow-Headers', '*');
  res.header('Access-Control-Allow-Origin', '*');
  next();
};

(虽然这是轮子改造,你可以使用 NPM 的 cors 模块)

然后你得到你原来的效果是这样的:

app.use(cors_middleware);

现在看get的定义:

app.get(path, callback [, callback ...])

它需要一个或多个回调的列表。

所以你可以把你的中间件放在那里:

app.get('/api/blocks/length', cors_middleware, (req, res) => {
  res.json(blockchain.chain.length);
});

【讨论】:

  • 我明白了。所以我可以定义多个中间件并在必要的端点中使用它?
猜你喜欢
  • 1970-01-01
  • 2016-09-01
  • 2017-03-19
  • 2015-06-24
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 2017-09-25
  • 2014-12-04
相关资源
最近更新 更多