2015-07-03 82 views
1

我正在使用节点js作为使用NTLM身份验证的休息服务的代理。 我使用httpntlm模块来绕过NTLM身份验证。该模块发出附加请求并返回响应。如何修改节点js响应

如何将NTLM响应数据写入原始响应?

var httpntlm = require('httpntlm'); 
var request = require('request'); 

app.use(function (req, res, next) { 
    httpntlm.post({ 
     url: url, 
     username: username, 
     password: password, 
     workstation: '', 
     domain: domain, 
     json: req.body 
    }, function (err, ntlmRes) { 

     // console.log(ntlmRes.statusCode); 
     // console.log(ntlmRes.body); 

     res.body = ntlmRes.body; 
     res.status = ntlmRes.statusCode; 

     next(); 
     // req.pipe(res); 
    }); 
}); 
+1

替换下一个和资源对象与此'res.status(ntlmRes.statusCode)。发送(ntmlRes.body)' –

+0

@RistoNovik比你非常多的变化!有用!你可以发表你的评论作为答案吗? - 我会将其标记为正确的 – opewix

回答

1

在示例代码中,你所提供的Express.js中间件使用,但简单地调用手next()接管下一中间件和不输出任何东西。相反,我们必须将回复发送给客户。

var httpntlm = require('httpntlm'); 

app.use(function (req, res, next) { 
    httpntlm.post({ 
     url: url, 
     username: username, 
     password: password, 
     workstation: '', 
     domain: domain, 
     json: req.body 
    }, function (err, ntlmRes) { 

     // Also handle the error call 
     if (err) { 
      return res.status(500).send("Problem with request call" + err.message); 
     } 

     res.status(ntlmRes.statusCode) // Status code first 
      .send(ntmlRes.body);  // Body data 
    }); 
});