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

时间:2018-03-21 14:34:19

标签: java tomcat servlets http-headers tomcat8.5

我们有一个传统客户端消耗部署在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删除';'之间的空白字符和'charset'关键字

我知道http标准说分区后的空格是可选的,正如另一个SO post所提到的那样,但是当问题的客户端运行遗留版本时,我想知道是否有办法强迫tomcat保留这个空白。

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

正如评论中所发表的那样,这是我们无法避免的,因为它在tomcat中被硬编码source code

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

谢谢@ zack6849指出那个。