求助:DRF+Axios部分请求失败,报ERR_NETWORK或ERR_BLOCKED_BY_CLIENT错误
排查与解决方案:NextJS + Django DRF 部分请求失败问题
1. 先确认请求基础信息
- 核对请求URL、方法、参数:月度/年度收支请求的时间参数格式是否符合后端要求?比如后端期望
YYYY-MM但前端传了YYYY/MM,或者时间范围超出数据库现有数据区间。 - 用Postman/Insomnia直接调用DRF接口:如果直接调用也失败,问题出在后端;如果能成功,问题在前端axios配置或请求逻辑。
2. 前端axios相关排查
- 对比请求头差异:检查成功请求和失败请求的
headers,比如是否带了有效的Authorization(token是否过期?部分请求是否漏传认证信息?),Content-Type是否和后端要求匹配(比如后端需要application/json但前端传了表单格式)。 - 检查axios拦截器:是否有请求拦截器在处理大时间范围请求时,误修改了参数或headers?
- 验证跨域代理配置:本地开发时,确认
next.config.js的代理规则是否覆盖了收支接口的路径,避免请求被拦截。 - 查看浏览器Network面板:重点看失败请求的状态码(400/401/403/500等)和响应内容,比如400是参数错误,500是后端服务器异常,401是权限不足。
3. Django DRF后端排查
- 查看DRF日志:在
settings.py开启DEBUG日志,看请求到达后端后的报错细节——比如数据库查询超时(月度/年度数据量大会触发超时)、权限校验失败(视图类的权限装饰器是否限制了该接口访问)。 - 检查视图逻辑:收支数据的查询是否存在性能问题?比如用
all()后在内存过滤,数据量大时导致超时;是否有字段拼写错误(比如模型里的monthly_income写成month_incom)。 - 排查序列化器:序列化大数量数据时是否出错?比如嵌套序列化器关联了过多冗余数据,导致序列化失败。
- 核对权限与认证:确认该接口的
permission_classes和authentication_classes是否和成功请求的接口一致,比如收支接口是否需要特定用户权限而前端未满足。
4. 网络与服务器层面
- 生产环境检查反向代理:Nginx/Apache的
client_max_body_size是否限制了响应体大小?月度/年度数据返回量过大时,可能被代理截断。 - 数据库连接检查:后端数据库是否存在连接数限制?高并发下请求可能被拒绝,或查询超时。
快速修复建议
先通过Network面板或DRF日志锁定错误类型,针对性处理:
- 400错误:对齐后端文档,修正请求参数格式;
- 401/403:检查token有效性,确保请求携带正确认证头;
- 500错误:修复后端查询逻辑(加索引、分页、用
values()减少返回数据量)或序列化器问题; - 超时:优化后端查询性能,或给axios添加合理的超时配置。
内容的提问来源于stack exchange,提问作者Zkh
相关产品推荐
相关产品推荐

