4

我们有一个使用部署在 tomcat 8.5 上的 servlet的旧客户端。此旧版客户端正在等待这种格式的内容类型标头响应(注意分号和“字符集”之间的空格):

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

然而,在服务器端,Tomcat 总是修剪这个空白,尽管我们在 servlet 中强制它:

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

甚至在具有自定义扩展名的过滤器中,如this questionHttpServletResponseWrapper中所建议的那样。

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

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

作为参考,我在 tomcat 官方文档中找到了这个:

Tomcat 删除 ';' 之间的空白字符 和“字符集”关键字

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

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

任何帮助,将不胜感激。

4

1 回答 1

1

正如评论中所发布的,这是我们无法避免的,因为它是在 tomcat源代码中硬编码的

在我们的特定用例中,我们终于能够稍微更改旧客户端,因此现在它可以处理标准格式的内容类型标头(没有空格)。

感谢@zack6849 波​​尔指出。

于 2018-04-27T11:45:06.773 回答