Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Keepalive HTTP API调用Meteor.JS_Meteor_Ntlm - Fatal编程技术网

Keepalive HTTP API调用Meteor.JS

Keepalive HTTP API调用Meteor.JS,meteor,ntlm,Meteor,Ntlm,我正在与Meteor合作,试图建立NTLM认证。我正在使用HTTP包与远程服务器进行NTLM握手。但是,我遇到了一个问题,我认为这是由于连接没有保持活动状态造成的。我无法在握手过程中做到这一点,因为远程服务器希望我重用相同的HTTP连接,但每次我不确定如何使用时,我都会创建一个新的HTTP连接。下面是我用来做这件事的一些方法。我非常感谢您的帮助。有没有HTTP的其他包具有保持活动选项?我是否可以使用默认HTTP包重新使用相同的连接?谢谢 var msg1 = Ntlm.createMessage

我正在与Meteor合作,试图建立NTLM认证。我正在使用HTTP包与远程服务器进行NTLM握手。但是,我遇到了一个问题,我认为这是由于连接没有保持活动状态造成的。我无法在握手过程中做到这一点,因为远程服务器希望我重用相同的HTTP连接,但每次我不确定如何使用时,我都会创建一个新的HTTP连接。下面是我用来做这件事的一些方法。我非常感谢您的帮助。有没有HTTP的其他包具有保持活动选项?我是否可以使用默认HTTP包重新使用相同的连接?谢谢

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身份验证。