2017-07-03 132 views
1

我試圖使用獲取請求發送數據,目的地使用basicauth-middleware進行身份驗證。通過瀏覽器和源程序驗證(不發送數據)工作正常,我得到一個確認輸出,說明它已連接,但問題是源程序使用GET和request將少量數據發送到目標程序,但它沒有被收到。無法驗證HTTP GET請求Node.js + Expressjs

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。我原來的想法是,它發送之前有任何數據要發送,但這不是呃案件,因爲連接確認顯示,同時請求發送和數據已被獲取
  • 我看到this發佈從2011年開始,儘管它看起來並不相關,我做這件事的方式也不同,但如果我能適應它,我將做的事情會非常棒。

我對node.js和大部分這些東西還很新。如果我忘記了任何相關信息,我將確保添加它。

回答

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是不是其中的一部分。

0

替換

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

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

+0

basicauth沒有定義。 var被設置爲中間件。相應地更新了文章。 – clbx

+0

你的代碼現在是否在控制檯中輸出「PASSWORD ACCEPTED」? – qiAlex

+0

是的。 PASSWORD ACCEPTED是提供的確認輸出。我假設這意味着建立連接並進行身份驗證,但沒有發送數據。數據發送時,它會在控制檯中打印出來。 – clbx