У нас есть старый клиент, использующий сервлет, развернутый на tomcat 8.5. Этот устаревший клиент ожидает ответа заголовка типа контента в этом формате (обратите внимание на пробел между точкой с запятой и «набором символов»):
Content-type: text/xml; charset=utf-8
Однако на стороне сервера Tomcat всегда обрезает эти пробелы, хотя мы принудительно делаем это в сервлете:
response.setContentType("text/xml; charset=utf-8");
Или даже в фильтре с пользовательским расширением HttpServletResponseWrapper
, как предлагается в этот вопрос.
Что бы я ни пытался, заголовок типа содержимого всегда возвращается без пробела.
Content-type: text/xml;charset=utf-8
В качестве справки я нашел это в официальной документации tomcat. :
Tomcat удаляет пустые символы между ';' и ключевое слово 'charset'
Я знаю, что стандарт http говорит, что пробел после точки с запятой является необязательным, как упоминалось в этом другом SO post, но поскольку клиент с проблемой запускает устаревшую версию, мне интересно, есть ли способ заставить tomcat сохранить этот пробел.
Я думаю о других вариантах, таких как изменение заголовка типа контента в apache или nginx (выше tomcat), но, если это возможно, я бы предпочел решение на уровне tomcat.
Любая помощь будет оценена по достоинству.