自己在实际编码中遇到的情况:
使用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版本。