axios 请求 url 地址,判断网络地址是否存在
const axios = require('axios');
async function isUrlReachable(url) {
try {
const response = await axios.get(url, {
timeout: 5000, // 设置请求超时时间,例如5秒
headers: {
// 你可以在这里添加自定义的请求头,例如:
// 'User-Agent': 'your-custom-user-agent'
},
// 如果只需要检查连接性,而不关心响应内容,可以设置 validateStatus
validateStatus: status => status >= 200 && status < 300,
});
// 如果请求成功,并且状态码在200-299之间,那么可以认为URL是可连接的
if (response.status >= 200 && response.status < 300) {
return true;
} else {
// 如果状态码不在200-299之间,但请求仍然成功(例如重定向),你可能需要根据你的需求来处理
console.log(`Unexpected status code: ${response.status}`);
return false;
}
} catch (error) {
// 如果请求失败(例如网络错误、超时、4xx/5xx状态码等),那么URL不可连接
if (axios.isCancel(error)) {
// 如果请求被取消(例如因为超时),可以在这里处理
console.log('Request canceled', error.message);
} else if (error.code) {
// 处理特定的错误代码,例如 'ECONNABORTED' 表示连接被中止
console.log(`Error code: ${error.code}`);
} else {
// 处理其他错误情况
console.error('Error', error.message);
}
return false;
}
}
// 使用示例
const url = 'https://example.com';
isUrlReachable(url).then(reachable => {
console.log(`URL is reachable: ${reachable}`);
});