无法验证HTTP GET请求Node.js + Expressjs

时间:2017-07-03 15:25:52

标签: javascript node.js http express get

我尝试使用Get Request发送数据时,目标正在使用basicauth-middleware进行身份验证。通过浏览器和原始程序(不发送数据)进行身份验证工作正常,我得到一个确认输出说它已连接,但问题是原始程序使用GET和{{向目标程序发送少量数据3}}但它没有收到。

Destination.js

app.use(middleware('user1', 'wordpass'));    

app.use(middleware(function(username, password) {
   const auth = true;
   console.log("PASSWORD ACCEPTED")
   return auth;

}));

app.get('/data', function (req, res){
    console.log(req.query);
    var x = req.query.data1
});

Origin.js

middleware = require('basicauth-middleware');

function auth(){
request.get('http://127.0.0.1:3000', {
    'auth': {
        'username': 'user1',
        'password': 'wordpass',
        'sendImmediately': false
     }
 });
 }

function send_data(){
    //Gets data
    function httpget() {
    var url = "http://127.0.0.1:3000/data?data1="+data['data1']+"&="+data['data2']+"&online=true";
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET", url, true);
    xmlHttp.send();
    console.log("Sent!")
    return xmlHttp.responseText;
}
auth();
httpget();

}

我尝试过的事情:

  • 切换订单,这似乎没有改变任何内容
  • 将sendImmediately更改为false。我最初的想法是,它在发送任何数据之前发送了一些内容,但事实并非如此,因为连接确认在请求发送且数据已被获取的同时显示
  • 我在2011年看到了request帖子虽然它似乎仍然没有相关性,但我正在做的方式有所不同但是如果我能够将它调整到我正在做的那将是非常了不起的

我仍然是node.js的新手,而且大部分都是这样的。如果我忘记了任何相关信息,我会确保添加它。

2 个答案:

答案 0 :(得分:0)

替换

app.use(middleware(function(username, password) {

app.use(basicauth(function(username, password) {

答案 1 :(得分:0)

找到解决方案。它可以与请求一起发送,而不是使用XMLHTTP请求发送GET数据。如此:

request.get("http://127.0.0.1:3000/speedtest?upload="+tele_data['upload_speed']+"&download="+tele_data['download_speed']+"&mid="+ config['meraki_id']+"&online=true", {
            'auth': {
                'username': 'user1',
                'password': 'wordpass',
                'sendImmediately': false
            }

        });

有问题的代码只允许在该请求函数中发送的任何内容,并且XMLHTTP不是其中的一部分。