我们有一个遗留 客户端使用部署在 tomcat 8.5 上的 servlet。 此旧版客户端正在等待此格式的内容类型 header 响应(注意分号和“字符集”之间的空格):
Content-type: text/xml; charset=utf-8
然而,在服务器端,Tomcat 总是修剪这个空白,尽管我们在 servlet 中强制这样做:
response.setContentType("text/xml; charset=utf-8");
或者甚至在具有自定义扩展 HttpServletResponseWrapper
的过滤器中,如 this question 中所建议的那样.
无论我尝试什么,返回的内容类型 header 总是没有空格。
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 之上)中的内容类型 header ,但如果可能的话,我更喜欢 tomcat 级别的解决方案。
如有任何帮助,我们将不胜感激。
最佳答案
如评论中所述,这是我们无法避免的事情,因为它已硬编码在 tomcat source code 中。
在我们的特定用例中,我们终于能够稍微更改旧版客户端,因此现在它可以处理标准格式(无空格)的内容类型 header 。
感谢@zack6849 指点。
关于java - 使用tomcat在Content-type header 响应中保留分号后的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49409116/