jquery - nodejs http请求getaddrinfo ENOTFOUND错误
问题描述
我尝试了很多方法来发出 http 请求,但总是出错getaddrinfo ENOTFOUND
。
环境:nodejs 提供者:Firebase Functions
方法 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 发送带有标头的 GET 请求"Authorization": "Basic password"
,它将按预期显示 API 结果。
3)API的代码和http请求代码在同一个firebase函数服务器/项目中。
4)nodejs导入了以下模块,不确定是不是引起了某种冲突:firebase-functions
, firebase-admin
, jsdom
, request
, https
, express
, body-parser
, cors
, jquery
,nodemailer
解决方案
推荐阅读
- html - 如何在中间留出空间
元素
- data-modeling - 无事实事实和事实表有什么区别?
- android - GridView 项目起床
- cordova - 当我们执行“ionic cordova build android”时究竟会发生什么?
- node.js - Google Action,帐户链接:身份验证后插入代码
- node.js - 简单的获取 API 不工作 Node express with angular
- angular - 量角器角度 5 单选按钮选择无法始终如一地工作
- python - 从 blob 中读取一个 json 文件作为字典
- react-native - 使用 Appium 或 Detox 进行集成测试的问题
- ios - 将文本对齐到 TableView 中单元格的左上角的简单方法?