我尝试使用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();
}
我尝试过的事情:
我仍然是node.js的新手,而且大部分都是这样的。如果我忘记了任何相关信息,我会确保添加它。
答案 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不是其中的一部分。