记录一次 400 Bad Request 事件

本文记录了一次由于HTTP请求Header超过Tomcat默认限制8KB引发的400 Bad Request错误。问题在于login接口将大量用户信息存入Header,导致后续接口请求失败。经过两天排查,发现错误日志在info级别下未显示。解决方案是调整Tomcat配置增大Header大小或避免在Header中存储过多信息。
摘要由CSDN通过智能技术生成

在一个正常划水的周三的下午,发现一个偷偷划水的不正常接口,在login(登陆)接口之后的getPerms接口突然报了400

哈! 400这种问题太好解决了,不用看就是参数的问题,不是参数类型错误就是参数名称错误.然鹅,这次并不是,你要问我为什么的话,我只能回答你,这个Get方法没有参数😂.

这个接口是个什么接口呢? 这个接口是用户登录之后根据用户角色获取用户权限树的一个接口,因为是公司的项目,代码我就不贴了,这里只说发生的原因,及如何解决的,给其他遇到类似问题的朋友提供一个排查的方向.

BUG的原因是因为request的header部分太大,超过了tomcat允许的最大值。默认情况下,tomcat(8.0版本)允许的http请求header的最大值是8024个字节(8KB),如何造成的呢,是因为在这个接口之前的login接口中,开发人员将用户的所用信息及权限信息一股脑的都塞到了request.getAttributes().put("userInfo",JSON.toJSONString(userLoginVO)); 而该用户信息有多大呢,单单是角色下的权限信息就达到了9.6KB,这个时候login接口请求成功之后,login后面的接口因为header部分太大就会造成请求失败,

这个BUG我们找了两天,为什么找了两天,刚开始定位不到问题,上网搜400的问题也找不到答案,只能通过一点点的测试寻找一些蛛丝马迹,你问我为什么不直接看错误日志,我只能说没有错误日志,看不到任何异常,在解决了这个问题之后,又到网上去搜head大小相关的问题才找到了一些相关的帖子,发现是有错误日志的,

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
400 Bad Request是一个HTTP状态,表示客户端发出的请求有语法错误或无法理解。这种错误通常是由于请求中的语法格式错误或请求无法被服务器满足导致的。例如,请求中可能缺少必要的参数或者参数格式不正确,或者请求的URL不正确。这种错误可以在上网、访问网页或与服务器进行通信时出现。解决这个问题的方法有多种,其中一种是通过修改DNS或清除浏览器的Cookies来解决。具体步骤可以根据具体情况进行操作。此外,对于nginx服务器中出现大量400 Bad Request错误的情况,可能是由于空的主机头导致的。解决方法是关闭默认主机的日志记录。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [400 bad request的原因意思和解决方法](https://blog.csdn.net/yisago/article/details/110876064)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [nginx服务器access日志中大量400 bad request错误的解决方法](https://download.csdn.net/download/weixin_38725734/12902713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值