JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

你对http 400错误的认知还只有参数错误吗?

wys521 2024-10-08 11:28:41 精选教程 15 ℃ 0 评论

对于400响应码,大家都不陌生,但是很多人在看见这个错误的时候,脱口而出的都是——"参数错误了!",实际上不是的,导致出现请求出现400响应码还有很多原因,比如:


1、使用NGINX 做反向代理服务器,那么在nginx里面有一个很多人陌生的指令设置,那就是
client_header_buffer_size (默认大小1K)与 large_client_header_buffers 默认值(4 8K)如果请求头大于设置的值,那么返回400错误码(图1、2)



2、请求中有非标准格式的请求头,比如标准的请求头都是使用中划线-,而有些开发可能不了解,自定义请求头时使用了下划线_,在有些代理服务中会拒绝这种下划线请求头,返回400错误,envoy代理中就有相关的设置headers_with_underscores_action:REJECT_REQUEST,同样,istio也是基于envoy的一款代理,它也具备同样的配置(图3、4)



3、请求头中同时带有Content-Length 与 Transfer-Encoding:chunked,对于envoy 这些代理是可以配置(allow_chunked_length:false)拒绝请求的,此时也会返回400错误(图5、6)



4、请求头中存在不合规的Content-Length,如设置Content-Length: -100,此时会响应400错误(图7)



5、请求时携带了多个Content-Length请求头也会响应400 (图8)

也许还有更多的场景,欢迎大家指点!

参考文档:https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.3

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表