我尝试了很多方法来发出http请求,但始终收到错误getaddrinfo ENOTFOUND
。
环境:nodejs 提供程序:Firebase函数
方法1-npm请求:
var options = {
url: 'https://us-central1-<project>.cloudfunctions.net/api/wakeUp',
headers: { "Authorization": "Basic password" }
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body)
}
console.log(error)
}
request(options, callback);
方法2-npm jquery :
$.ajax({
headers:{"Authorization":"Basic password"},
url: "https://us-central1-<project>.cloudfunctions.net/api/wakeUp",
type: 'GET',
contentType: "application/x-www-form-urlencoded",
success: function (data) {
console.log(data)
},
error: function (error) {
console.log(error);
}
})
方法3-npm https :
var options = {
url: 'us-central1-<project>.cloudfunctions.net',
port: 443,
path: '/api/wakeUp',
method: 'GET',
headers: { "Authorization": "Basic password" }
};
const req = https.request(options, (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
console.log(d)
});
});
req.on('error', (e) => {
console.error(e);
});
req.end();
无论哪种方式,控制台始终显示错误getaddrinfo ENOTFOUND :443
。
我真的快要疯了,请指教。
旁注:
1)我从隐私和安全问题的请求中屏蔽了URL和密码。
2)我已经实现了中间件来检查授权。因此,如果在浏览器中打开URL,它会说“未经授权”,但是如果我使用Postman发送标头为"Authorization": "Basic password"
的GET请求,它将按预期显示API结果。
3)API的代码和http请求代码位于同一firebase函数服务器/项目中。
4)nodejs导入了以下模块,不确定是否会引起某种冲突:firebase-functions
,firebase-admin
,jsdom
,request
,https
,express
,body-parser
,cors
,jquery
,nodemailer