我有一个Jersey-Application代理对内部应用程序的请求,该应用程序应该不能直接访问。
@GET
@Path("/path")
public static Response get(
@Context UriInfo uriinfo,
@Context HttpHeaders httpHeaders,
byte[] body
) throws Exception{
//call the internal application
Response response = get(url, uriinfo, httpHeaders, body, HttpMethod.GET);
ResponseBuilder rb = Response.
status(response.getStatusCode()).
entity(response.getResponseStream());
//set all headers from response
for(header : response.getResponseHeaders()){
rb.header(...);
}
Response r = rb.build();
//checking headers here, does NOT contain any Content-Length header
return r;
在来自内部应用程序的响应中,有Transfer-Encoding = chunked
标头集。到目前为止,这没问题。
现在,发送到客户端的响应还包含Content-Length
标头集,大概是泽西本身在传出响应上。当我在将标题发送到客户端之前检查标题时,所有标题都设置正确,就像内部应用程序的响应一样。
Content-Length
标头导致客户端无法正确解释响应,因为应设置Content-Length
或Transfer-Encoding
,如here所述。
如果我已经设置了Transfer-Encoding,如何阻止Jersey设置Content-Length
标题?