如何在restify中处理403 HTTP错误?

我一直在restify中处理HTTP错误。 这些是我一直在尝试的代码:

function send403(req, res, err, cb) { console.log('Forbidden'); res.end(); } 

然后我在ForbiddenError事件中使用该函数:

 server.on('ForbiddenError', send403); 

我期待每一次服务器接收一个请求,而无需authorization头执行该函数

 server.get('/resource', function (req, res, next) { if(typeof req.headers['authorization'] === 'undefined') { return next(new restify.ForbiddenError()); } else { // HTTP 200 } }); 

每次我尝试访问我不断得到该默认restify JSON消息的url。

仅供参考我已经尝试了404错误的相同的方法,它的工作原理

 server.on('NotFound', send404); 

每次我尝试发送一个请求到一个不存在的URL, send404函数将被执行。

我想这可能是你正在寻找的。 我注意到,在“server.on”语句中,restify不需要“错误”部分。 以下是一个完整的实例。

 'use strict'; var restify = require('restify'); var server = restify.createServer(); server.on('Forbidden', send403); server.get('/resource', function(req, res, next){ if(typeof req.headers['authorization'] === 'undefined') { next(new restify.ForbiddenError()); } else { // HTTP 200 } }); function send403(req, res, err, cb){ console.log('Log something here'); return cb(); } server.listen(9000); console.log('listening on port 9000');