浏览器console报404能查出是哪里调用的吗_记一次线上接口404排查过程

前言

今天周五美滋滋的划半天水,上个厕所回来客户群里来了一条信息,丢了一张截图,冲上来就问,这个怎么编辑不了了?

我特么一脸懵逼,我也想知道为什么编辑不了了啊。打开线上系统,找到编辑弹窗,按下F12,调到network,使出浑身力气按下保存按钮,心里想着,xx用户肯定是你操作不当,看我这不是好的吗。

network中血红的报错就像被一巴掌打过的脸一样,我太难了。为什么,为什么明明这个功能上线了一个多月了没有这个问题。好了不戏精了,来看问题。

排查

  • 第一步

打开network观察发现只有一个接口报了404。其他接口都是好的,想着这个破代码一个多月没动过了,应该不是代码的问题。右键将这个接口地址复制到浏览器直接打开

85b2a763acef3cc557757f5f184055cb.png

因为这个接口是POST请求方式,所以返回错误,但是http status还是正常的200的呀,因为还能正常走到代码逻辑里

这里暂时排除后端代码的问题

  • 第二步

因为这个需求已经上线一个多月了,而且测试环境线上环境都验证过。前端调用其他接口包括GET/POST都是正常的

这里暂时排除前端代码问题

  • 第三步

把这个接口url复制到postman,不带任何参数请求一次:

638c282ac9bcbbf648042941cc00fcb2.png

同样可以调通,也是正常的200。

这里排除是浏览器的问题

  • 第四步

我把浏览器请求体里的参数复制到postman中试一下,如下图:

f8d2f912fcc30f7a6109d689c0be5502.png

这个数据好像有点多哎,心里想着是不是参数的问题呢,赶紧试试看,复制到调试中:

f58eaf33bc5bc651d3f89d822556e3e8.png

注意,这里我调通了,因为最后解决这个问题了,所以现在能调通,但是之前排除的时候是返回404

走到这里,犯罪嫌疑人已经锁定为POST请求的body了。初步怀疑是参数json体数据太多

  • 第五步:验证是否是参数问题

随便在线上找一个POST请求,参数少的试一下便知有没有。

d743b17ceea19904f2ffff279fbf9f4d.png

发现其他的POST接口是正常的,而且参数不是很多。只有刚才有问题的那个接口包含大量的参数。我去新建个文本将参数复制进去看了一下大小

这个是成功的

fe6b30d1e6136a613e59d8d5051eb448.png

这个是失败的

10c0c82e182965d4a0462d722222353d.png

好了罪魁祸首大概已经确定了,就决定是你的,带着这个问题去度娘找找看有没有人遇到一样的问题

  • 第六步:原来是nginx搞的鬼

带着疑问去网上百度,关键词:

nginx http Post body过大 404

825c7930ae8454687b47a933909f9af4.png

给出原文链接

发现一个很类似的问题 按照方案修改nginx配置

# Nginx分配给请求数据的Buffer大小
client_body_buffer_size  128k;
# 控制该server的所有请求报文大小
client_max_body_size   16m

重启服务,再次尝试问题就解决了。

总结

  • client_max_body_size

client_max_body_size 默认 1M,表示 客户端请求服务器最大允许大小,在“Content-Length”请求头中指定。如果请求的正文数据大于client_max_body_size,HTTP协议会报错 413 Request Entity Too Large。就是说如果请求的正文大于client_max_body_size,一定是失败的。如果需要上传大文件,一定要修改该值。

  • client_body_buffer_size

Nginx分配给请求数据的Buffer大小,如果请求的数据小于client_body_buffer_size直接将数据先在内存中存储。如果请求的值大于client_body_buffer_size小于client_max_body_size,就会将数据先存储到临时文件中

关于

  • 本文首发于记一次线上接口404排查过程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值