我正在准备生产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) {
...
}
是否可以放置某种“其他”行,以便如果路线与我定义的任何东西不匹配,我可以返回特定的东西?
感谢。
答案 0 :(得分:1)
首先将cors作为中间件放在你的第一条路线之前。
app.use(cors(corsOptions));
//routes down below
说明:为每个请求设置下面所有路由的Cors。因为这个中间件将首先执行。
第二次在你的最后路线之后放置你的否则或404路线。
app.use((req,res,next)=>{
//Your message
res.send('Page Not Found');
});
说明:如果任何路线不匹配,则会触发此路线。