vert.x - Vert.x GET api 对某些流量返回 400 Bad Request
问题描述
我们有一个 Vert.x 应用程序,我们在其中托管了一些 HTTP GET 和 POST api。在生产测试时,我们面临一个问题,即对客户端的一个 GET api 响应是 400 - 错误请求。
这个 api 在大多数情况下都可以工作,但对于少数客户端,它会给出 400 - 错误请求。
我们已经验证客户端正确发送请求但得到 400 作为响应。
但是在运行应用程序的服务器上,我们找不到任何日志。
在 Handler 的第一行有一条日志语句,它没有为 400 - Bad Request case 打印,并且正在为所有成功的请求打印它。
解决方案
经过大量调试后,我们发现请求正在到达 vertx 应用程序,并且路由器正在拒绝请求,并显示 400 - Bad Request。
默认情况下,vertx 接受总 Header 大小为 8kb 的请求。在某些情况下,标头中的 Cookie 大小超过 8KB,因此出现错误。
我们可以覆盖 HttpServerOptions 中的 Header 大小限制。在那个问题解决之后。
vertx.createHttpServer
(new HttpServerOptions().setSsl(true)
.setMaxHeaderSize(32 * 1024)
.setTcpKeepAlive(true))
.requestHandler(router::accept)
.listen(config().getJsonObject("http").getInteger("port"), handler -> {
futureHttpServer.complete();
Logger.debug("httpservice deployed");
});
推荐阅读
- python - 递归打印字典的树结构
- c# - 如何按dayofWeek c#对日期列表进行分组
- websphere-8 - WebSpehere WAS 8.5.5.x META-INF 中的 ibm-application-bnd.xml
- xaml - 'local:Class1' 像标记扩展一样使用,但是.. 是否有故障
- python - Pandas,未来警告:使用多个键进行索引
- node.js - solr 添加数组将对象键转换为数组
- javascript - 计算数据库中的数组数量
- powershell - 如何在 Pester 中使用两个互斥参数模拟测试
- reactjs - 有条件地响应本机更改状态
- sql-server - 将使用和加密密码的 SSIS 包从 2008 升级到 2012