nodejs http请求getaddrinfo ENOTFOUND错误

时间:2018-09-20 09:55:22

标签: jquery firebase https xmlhttprequest google-cloud-functions

我尝试了很多方法来发出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-functionsfirebase-adminjsdomrequesthttpsexpressbody-parsercorsjquerynodemailer

0 个答案:

没有答案