网站首页 > 精选教程 正文
对于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
猜你喜欢
- 2024-10-08 nginx location 配置阐述优先级别使用说明-不当可能存在安全隐患
- 2024-10-08 Nginx 解决error.log和access.log日志的改善总结
- 2024-10-08 nginx 1.19.6 主线版发布 nginx 1.10
- 2024-10-08 Tomcat竟然有bug,这我能信? tomcatdebug
- 2024-10-08 记一次请求接口出现400响应码的诡异错误实录
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)