Keepalive HTTP API调用Meteor.JS
我正在与Meteor合作,试图建立NTLM认证。我正在使用HTTP包与远程服务器进行NTLM握手。但是,我遇到了一个问题,我认为这是由于连接没有保持活动状态造成的。我无法在握手过程中做到这一点,因为远程服务器希望我重用相同的HTTP连接,但每次我不确定如何使用时,我都会创建一个新的HTTP连接。下面是我用来做这件事的一些方法。我非常感谢您的帮助。有没有HTTP的其他包具有保持活动选项?我是否可以使用默认HTTP包重新使用相同的连接?谢谢Keepalive HTTP API调用Meteor.JS,meteor,ntlm,Meteor,Ntlm,我正在与Meteor合作,试图建立NTLM认证。我正在使用HTTP包与远程服务器进行NTLM握手。但是,我遇到了一个问题,我认为这是由于连接没有保持活动状态造成的。我无法在握手过程中做到这一点,因为远程服务器希望我重用相同的HTTP连接,但每次我不确定如何使用时,我都会创建一个新的HTTP连接。下面是我用来做这件事的一些方法。我非常感谢您的帮助。有没有HTTP的其他包具有保持活动选项?我是否可以使用默认HTTP包重新使用相同的连接?谢谢 var msg1 = Ntlm.createMessage
var msg1 = Ntlm.createMessage1(hostname);
HTTP.get(url, {
headers: {
"Authorization": "NTLM " + msg1.toBase64()
}
}, function (error, result) {
if (result != null) {
var response = result.headers["www-authenticate"];
var msg2 = Ntlm.decodeMessage2(response);
//here I should respond to msg2 on same kept-alive connection, but I'm not, so it's failing
var msg3 = Ntlm.createMessage3(msg2, hostname);
HTTP.get(url, {
headers: {
"Authorization": "NTLM " + msg3.toBase64()
}
}, function (error, req) {
if (req != null) {
if (req.statusCode == 200) {
Ntlm.authorized = true; //success
} else {
//error, what I'm getting now
//"401 - Unauthorized: Access is denied due to invalid credentials"
}
} else Ntlm.error(error);
});
} else Ntlm.error(error);
});
我认为您无法保持与默认meteor http包的连接。但是,此默认包有扩展和替换。其中一个似乎支持将keepalive设置为true的方法是这样的。此处有有关此软件包请求支持的更多信息:谢谢您的帮助!此后,我转而直接使用NPM require而不是Meteor包装器来访问这些选项,但即使重用同一个代理并将forever标志设置为true,仍然会得到相同的结果:我几乎放弃了让它工作…@RubenMartinezJr。我使用node http ntlm包:。这并不能回答你的问题,但它可能是你想要做的事情的解决方案。哦,天哪……这看起来很完美。我不会抱太大的希望,但今晚我会尝试一下,并向大家汇报。@RubenMartinezJr。这对我很有效。我正在访问一个RESTAPI,该API需要从Meteor应用程序的服务器端进行Windows身份验证。