node.js - 如何处理restify中的403 HTTP错误?

标签 node.js http-status-code-403 restify

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

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

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

server.on('ForbiddenError', send403);

我希望每次服务器收到没有 authorization header 的请求时都会执行该函数

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

每次我尝试访问该网址时,我都会收到默认的 Restify JSON 消息。

仅供引用,我已经尝试了相同的方法来解决 404 错误,并且有效

server.on('NotFound', send404);

每次我尝试向不存在的网址发送请求时,都会执行 send404 函数。

最佳答案

我想这可能就是您正在寻找的。我注意到在“server.on”语句中,restify 不需要“Error”部分。以下是一个完整的工作示例。

'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');

关于node.js - 如何处理restify中的403 HTTP错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271727/

相关文章:

kubernetes - 预检(选项)返回 403,CORS

c# - 如何解决 google analytics api 调用中的 403 错误

javascript - restify.serveStatic 不处理默认文档

node.js - restify.js 路由端点与参数冲突

javascript - 如何使用 node.js 将 html 的值表添加到 mysql

node.js - Mongoose 独特的属性仍然允许我保存到数据库

wcf - 403 - 将类库添加到 Azure 项目上的 WCF Web 角色时出现禁止错误

javascript - 如何在 bitbucket pipelines.yml 文件中编写条件语句?

Node.js 强大的重命名上传文件

javascript - 上传图片并使用 restify 调整大小