起因
Edge报400错误,而谷歌浏览器正常,被这个问题困扰了多日。有一天运维人员反馈新创建的账户没有400的报错,而部分老的账户突然间谷歌浏览器也不能用了。
分析
经过反复测试确实如上,依次检查了token生成,信息传递等,并在测试工具测试生成的token均没有报错。对比新旧账户的的请求差异,旧账户字符4200多,新账户1600多,经搜索tomcat默认表头长度为8192,遂怀疑是header过大。而后开启调试模式,在一次调试中程序反馈了Request header is too large
原因
Request header is too large,可以看到acess_token 超长,通过检查token生成过程,发现其中包含权限信息超过200,通过移除权限验证不在超长。
解决方案
这种情况下可以减少权限的字符,但是因为再生产项目,动的话比较复杂。
还可以扩大标头字符
server.max-http-header-size=81920即可这个最好不要无限大,会占用内存大小是因为accesstoken过长,其中包含的权限信息过多
未经允许不得转载:lxfamn » 400 bad request fail load resoure