亲亲漫画APP为什么老是弹出help 400 bad badrequest啥意思

今天做项目的时候需要向服务器接口 传递 json参数,使用 apache 的 httpclient当时没有对参数做特殊处理直接提交了,结果运行时报错了如下:

后来在网上查资料找到原因了:HttpGet或 HttpPost都不能傳包含 ” 、“{“、”}”这样的参数,需要对特殊字符进行转义把 ” 转成%22,把 { 转成%7b把 } 转成%7d

注意:参数里面如果有 空格的话,也需要转义否则会有问题。

景安网络—专业的数据中心服务商!提供快云服务器,快云VPS,虚拟主机,域名注册,服务器托管,服务器租用,SSL***数据库存储。 2019快云上云特惠季 

nginx的400错误比较难查找原因因为此错誤并不是每次都会出现的,另外出现错误的时候,通常在浏览器和日志里看不到任何有关提示

经长时间观察和大量试验查明,此乃badrequest啥意思 header过大所引起badrequest啥意思过大,通常是由于cookie中写入了较大的值所引起

所幸在nginx中是有办法解决这个问题:

这个配置可接收16k以下的header,在浏览器中cookie的字节数上限会非常大所以实在是不好去使用那最大值。

最好的解决办法当然是不要往cookie里写入太多的东西不过如果是一个很大的網站,那么在一个二级域名写入了顶级域名下的cookie似乎是不好控制的这需要制定一个规范来控制顶级域名的cookie写入量才可以解决得了。

这个鈳能也是nginx的一个bug因为buffer这个词义上说为缓冲,也就是说如果没取完的话,是会循环取直至取完的但是nginx并没有进行循环的动作直接返回叻400错误。nginx的下一个版本可能会修正这个问题

最近发现16k的buffer居然还是不够用,改成128k了变态一点对nginx来说也不是很大问题,重要是人不能因为這种事情搞疯了

有朋友发现nginx在后台接收到很大的header时也会出现400错误如:

在nginx的wiki里找了一遍,没有找到合适的语句wiki更新过慢?于是查了一遍源码在ngx_http_proxy_module.c也没有找到合适的语句。

不过在nginx 0.3.12版的更新里有这么一句话:

不清楚作者改名用意何在不过,proxy_buffer_size之前的名字proxy_header_buffer_size倒是有点合适如果有萠友老遇到后台接收时抛出400错误,可以增大这个参数一试

参考资料

 

随机推荐