节点请求中的NTLM代理validation

我正在尝试使用需要NTLM身份validation的企业Web代理的Node进行请求。 我已经尝试过使用代理服务器这样的一些库,但是收效甚微。

这里是我的代码使用请求库和ntlm.js类似于代理代理的简化版本。 我希望在最后一次请求通话后得到一个成功的回应,但由于某种原因,我仍然得到一个407 –

var ntlmRequest = function(req) { var ntlmOptions = {}; ntlmOptions.ntlm = {}; ntlmOptions.method = 'GET'; ntlmOptions.path = 'http://www.jsonip.co.uk'; ntlmOptions.ntlm.username = 'USERNAME'; ntlmOptions.ntlm.password = 'Pa$$word'; ntlmOptions.ntlm.workstation = 'PC-NAME'; ntlmOptions.ntlm.domain = 'DOMAIN'; var type1message = ntlm.createType1Message(ntlmOptions.ntlm); var requestOptions = { url: 'http://www.jsonip.co.uk', proxy: 'http://webproxy.domain.com:8080', headers: req.headers }; requestOptions.headers['Proxy-Authorization'] = type1message; requestOptions.headers['Proxy-Connection'] = 'Keep-Alive' request(requestOptions, function(err,res){ var type2message = ntlm.parseType2Message(res.headers['proxy-authenticate']); var type3message = ntlm.createType3Message(type2message, ntlmOptions.ntlm); requestOptions.headers['Proxy-Authorization'] = type3message; request(requestOptions, function(err,res){ console.log(res.statusCode); }); }); }; 

我试着比较一些数据包捕获和一个工作NTLM请求(使用curl),我可以看到这种types1和types3请求 –

 [HTTP request 1/2] [HTTP request 2/2] 

我的请求只显示1/1。

我想也许在NTLM的其他实现浏览器跨越多个数据包的请求。 不知道这是为什么它不工作的原因,或者只是一种不同的做事方式。

提前致谢。