Node.js抛出ERR_UNHANDLED_REJECTION错误,请求403状态码如何解决?
解决Node.js中Axios 403未处理Promise拒绝问题
先解决未处理Promise拒绝(阻止程序崩溃)
这个报错的直接原因是Promise拒绝未被捕获,先补上错误处理避免程序崩溃:
方式1:使用.then().catch()链式调用
axios.get('目标请求地址') .then(res => { // 正常处理响应逻辑 }) .catch(err => { console.error('请求失败:', err); // 可在此针对性处理403错误 });
方式2:async/await配合try/catch
async function fetchResource() { try { const res = await axios.get('目标请求地址'); // 正常处理响应逻辑 } catch (err) { console.error('请求失败:', err); if (err.response?.status === 403) { // 专门处理403场景 } } }
全局兜底(临时救急,不替代局部捕获)
如果暂时找不到未捕获的Promise,可先加全局监听避免崩溃:
process.on('unhandledRejection', (reason, promise) => { console.error('未处理的Promise拒绝:', reason); });
排查并解决403状态码根源
403是服务端返回的「禁止访问」,常见原因和解决方法:
- 身份验证失败:检查请求头是否携带有效凭证(如
Authorization: Bearer <token>或API-Key: <密钥>),确认凭证未过期、权限足够。 - 请求头不合法:部分服务会校验
User-Agent、Referer等字段,模拟正常浏览器的请求头试试。 - 资源路径/参数错误:确认请求的URL和参数符合服务端要求,比如是否访问了不属于你的私有资源。
- 触发反爬机制:如果是第三方公开API,可能请求频率过高,降低请求频率(比如加
setTimeout延迟),或按要求完成验证。 - 权限配置问题:如果是自建服务,检查后端路由的权限规则,确认当前用户有访问该资源的权限。
内容的提问来源于stack exchange,提问作者Zephyr
相关产品推荐
相关产品推荐

