节点/快速 - 否则路由和CORS

时间:2016-06-09 11:50:20

标签: node.js express routing cors

我正在准备生产Node / Express API但是有一些问题/建议需要帮助:

1 - 我正在使用npm包cors - 这样做是为了开发基本上禁用CORS,但是现在我正在转向生产我只希望某些URL能够访问API。< / p>

所以我看到的是:

var corsOptions = {
  origin: 'http://www.example.com',
  methods: ['GET', 'POST']
};

app.get('*', cors(corsOptions), function(req, res, next) {
  res.json({msg: 'This is CORS-enabled for only example.com.'});
});

然而(从我所看到的)我需要为每个请求类型执行此操作,例如:

app.post('*', cors(corsOptions), function(req, res, next) {
      res.json({msg: 'This is CORS-enabled for only example.com.'});
});

app.del('*', cors(corsOptions), function(req, res, next) {
      res.json({msg: 'This is CORS-enabled for only example.com.'});
});

是否有更简单的方法可以避免此类重复?

2 - 第二个问题 - 我有一长串的API路线,例如

router.post('/registerUser', function(req, res) {
  ...
}

是否可以放置某种“其他”行,以便如果路线与我定义的任何东西不匹配,我可以返回特定的东西?

感谢。

1 个答案:

答案 0 :(得分:1)

首先将cors作为中间件放在你的第一条路线之前。

   app.use(cors(corsOptions));
    //routes down below

说明:为每个请求设置下面所有路由的Cors。因为这个中间件将首先执行。

第二次在你的最后路线之后放置你的否则或404路线。

app.use((req,res,next)=>{
   //Your message
   res.send('Page Not Found');
});

说明:如果任何路线不匹配,则会触发此路线。