使用tomcat在Content-type头响应中保留分号后的空格

我们有一个遗留客户端消耗部署在tomcat 8.5上的servlet.

此遗留客户端正在等待此格式的内容类型标头响应(请注意分号和’charset’之间的空格):

Content-type: text/xml; charset=utf-8

但是,在服务器端,Tomcat总是修剪这个空格,虽然我们强制它在servlet中:

response.setContentType("text/xml; charset=utf-8");

或者甚至在具有自定义扩展HttpServletResponseWrapper的过滤器中,如this question中所建议的那样.

无论我尝试什么,内容类型标题总是返回没有空格.

Content-type: text/xml;charset=utf-8

作为参考,我在tomcat官方documentation中发现了这个:

Tomcat removes blank chars between the ‘;’ and the ‘charset’ keyword

我知道http标准说空格在分号之后是可选的,正如在其他SO post中所提到的那样,但是当问题的客户端运行遗留版本时,我想知道是否有任何方法可以强制tomcat保留这个空格.

我正在考虑其他选择,例如修改apache或nginx中的内容类型头(在tomcat之上),但是如果可能的话我更喜欢tomcat级别的解决方案.

任何帮助,将不胜感激.

最佳答案 正如在评论中发布的那样,这是我们无法避免的,因为它在tomcat
source code中是硬编码的

在我们的特定用例中,我们最终能够稍微改变遗留客户端,因此现在它可以处理标准格式的内容类型标题(没有空格).

谢谢@ zack6849指点那个.

点赞