javascript - 为什么使用 axios 发出 get 请求失败并显示状态码 503?
问题描述
const { default: Axios } = require("axios");
var giveMeAJoke = require("give-me-a-joke");
const getjoke = async () => {
try {
const data1 = await Axios.get("https://icanhazdadjoke.com", {
headers: {
Accept: "application/json",
},
});
} catch (e) {
console.log(e);
}
};
getjoke();
这就是我在 axios 上尝试的。我用 fetch() 提出了同样的请求,它工作得很好。我使用的很少有依赖于 axios 的包,每个包都抛出相同的错误。帮帮我。
node index.js
Error: Request failed with status code 503
at createError (D:\web-technology\practice\test\jokester\node_modules\axios\lib\core\createError.js:16:15)
at settle (D:\web-technology\practice\test\jokester\node_modules\axios\lib\core\settle.js:17:12)
at IncomingMessage.handleStreamEnd (D:\web-technology\practice\test\jokester\node_modules\axios\lib\adapters\http.js:236:11)
at IncomingMessage.emit (node:events:406:35)
at endReadableNT (node:internal/streams/readable:1329:12)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
解决方案
服务器似乎User-Agent
需要自定义标头,并且在 axios 的情况下的默认值("axios/0.21.1")
会因为axios
后面跟着/
符号而产生问题,因此如果您提供一些其他值或删除/
字符,例如。("axios 0.21.1")
,然后它工作。
const axios = require('axios').default;
const getjoke = async () => {
try {
const response = await axios.get("https://icanhazdadjoke.com/", {
headers: {
Accept: "application/json",
"User-Agent": "axios 0.21.1"
}
});
console.log("received response: ", response.data);
} catch (err) {
console.log("received error: ", err.toJSON());
}
};
getjoke();
输出:
received response: {
id: 'm3wPZoz51ob',
joke: 'Did you hear the news? FedEx and UPS are merging. They’re going to go by the name Fed-Up from now on.',
status: 200
}
推荐阅读
- html - Bootstrap 3 推/拉和可访问性
- typescript - 是否可以在 Typescript 中提取这种类型?
- python-3.x - 如何从 PyQt5 中的另一个类运行函数
- node.js - 为什么这些字符串在 Lambda 上上传时不相等?
- semantic-release - 如何使语义发布在文档提交上发布?
- java - 在 Glassfish 5 上部署 Grails 应用程序时出错
- python - 有没有办法将数字范围放入一个列表中,每个数字的差异大于 x?
- r - 是否有可以添加新的累积值列的 R 函数?
- ruby-on-rails - form_for 用 :slug 而不是 :id
- c - 机器码中文本字符串的形式是什么?