Vert.x GET api returns 某些流量的 400 错误请求
Vert.x GET api returns 400 Bad Request for some traffic
我们有一个 Vert.x 应用程序,我们在其中托管了几个 HTTP GET 和 POST api。在生产测试中,我们面临一个问题,即一个 GET api 对客户端的响应是 400 - Bad Request.
这个 api 大多数时候都有效,但对于少数客户,它会给出 400 - Bad Request。
我们已验证客户端正在正确发送请求但收到 400 响应。
但是在应用程序所在的服务器上 运行 我们找不到任何日志。
在 Handler 的第一行有一个日志语句,它没有为 400 - Bad Request 案例打印,而是为所有成功的请求打印。
经过大量调试后,我们发现请求正在到达 vertx 应用程序,而路由器正在拒绝请求并返回 400 - Bad Request。
默认情况下,vertx 接受总 Header 大小为 8kb 的请求。在某些情况下,Header 中的 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");
});
我们有一个 Vert.x 应用程序,我们在其中托管了几个 HTTP GET 和 POST api。在生产测试中,我们面临一个问题,即一个 GET api 对客户端的响应是 400 - Bad Request.
这个 api 大多数时候都有效,但对于少数客户,它会给出 400 - Bad Request。
我们已验证客户端正在正确发送请求但收到 400 响应。
但是在应用程序所在的服务器上 运行 我们找不到任何日志。
在 Handler 的第一行有一个日志语句,它没有为 400 - Bad Request 案例打印,而是为所有成功的请求打印。
经过大量调试后,我们发现请求正在到达 vertx 应用程序,而路由器正在拒绝请求并返回 400 - Bad Request。
默认情况下,vertx 接受总 Header 大小为 8kb 的请求。在某些情况下,Header 中的 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");
});