自己在实际编码中遇到的情况:
使用jetty构建servlet应用,response里面设置header,在8.1.0.RC5中,如下代码立马生效:
resp.setHeader("X-Accel-Redirect", redirect);
resp.setHeader("Connection", "Keep-Alive");
但是利用jetty-9.4.11.v20180605版本,死活不生效,最后快要绝望的时候,发现需要调用resp.flushBuffer()或者resp.getWriter()
.close()才能生效。
同样的原理,如果使用vertx,那么需要调用response.end()。
response.putHeader("X-Accel-Redirect", redirect);
response.putHeader("Connection", "Keep-Alive");
response.headers().set("X-Accel-Redirect", redirect);
response.headers().set("Connection", "Keep-Alive");
response.end();
log.info("response header written "+response.headWritten());
这里response.headers().set()效果和response.setHeader()是一样的,最重要的是需要调用response.end()。这里使用的vertx-3.5.3版本。
本文探讨了在使用Jetty 9.4.11版本构建Servlet应用时,响应头设置需要调用flushBuffer()或getWriter().close()才能生效的问题,并对比了在Jetty 8.1.0.RC5版本中的不同表现。此外,还介绍了在Vert.x 3.5.3版本中类似问题的解决方案,强调了response.end()的作用。
1万+





