cors中间件与发送标头相同吗?

时间:2018-12-01 01:31:12

标签: javascript node.js cors

对于节点项目,我使用的是cors。有两个选项可用,一个是cors middleware,另一个正在发送标头,例如:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", CLIENT_ORIGIN);
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept"
  );
  res.header("Access-Control-Allow-Methods", "GET,POST,PUT,PATCH,DELETE");
  res.header("Access-Control-Allow-Credentials", true);
  if (req.method === "OPTIONS") {
    return res.sendStatus(204);
  }
  next();
});

使用两者中的一个有区别吗?一个会用另一个吗?我需要两个吗?

2 个答案:

答案 0 :(得分:0)

CORS中间件是Express.js框架的中间件,您无需同时使用两者。 如果您使用的是Express.js,那么我建议您最好使用expressjs/cors中间件,而不要像问题中提到的那样发送标头。

答案 1 :(得分:0)

我将使用您列出的npm cors软件包来实现您的目标。使用此cors库时,无需手动设置标头,除非您要设置cors软件包未设置的其他标头。

我已将此软件包专门用于白名单功能,其中您可以包含要允许其向API(https://www.npmjs.com/package/cors#configuring-cors-w-dynamic-origin)发出请求的域的列表。