我的观察是,在向响应中添加二进制数据时,自定义标头和内容类型会丢失。
例如,这可以按预期工作:
private void teapot(HttpServletResponse response) {
response.setHeader("Teapot", "Coffee");
response.setContentType("text/plain");
response.setStatus(418);
}
响应(在客户端)上的标头看起来像:
{'Teapot': 'Coffee', 'Content-Type': 'text/plain', 'X-Cloud-Trace-Context': 'NNNN', 'Date': 'Sun, 28 Oct 2018 19:29:05 GMT', 'Server': 'Google Frontend', 'Content-Length': '0'}
当我添加这样的二进制数据时:
IOUtils.copy(inputstream, response.getOutputStream());
收到的标头是:
{'X-Cloud-Trace-Context': 'NNNN', 'Date': 'Sun, 28 Oct 2018 19:29:11 GMT', 'Content-Type': 'text/html', 'Server': 'Google Frontend', 'Content-Length': '1336799'}
标头或内容类型都不来自我指定的内容。
如何避免这种情况?