Сводная задача: изменение заголовка «Content-type» в HttpServletResponse на «image/svg + xml» дает мне пустой ответ с надписью «Content-length», 0 "в моем браузере.Ширина разрешения Java HttpServletResponse Content-Length при смене другого заголовка
Полное описание:
Я работаю с плагином CMS (в Java), которые используют HttpServletRequest и HttpServletResponse. Существует проблема с возвратом CMS «application/octet-stream» на запросы к файлам .svg.
Плагин, над которым я работаю, - это сервлет, который перехватывает все пары «запрос-ответ» (сопоставление определенного шаблона URL-адресов с папками изображений). Затем я проверяю, содержит ли строка запроса «.svg», а затем изменит Content-Type на «image/svg + xml» в ответе (из «application/octet-stream»).
Но когда я меняю тип контента; Заголовок Content-length равен 0, и браузер ничего не отображает. Я теряю содержимое после изменения заголовка другими словами.
Есть ли способ, по которому я могу изменить только один заголовок, не записывая содержимое изображения в ответ? (ServletOutputStream).
Я придумал одно решение; который выполняет дополнительный запрос HttpGet (в плагине) к соответствующему svg-изображению, прежде чем записывать его в ответ от InputStream, но я думаю, что это слишком дорого для каждого запроса svg на зараженном сервере.
Если бы я мог уйти с изменением заголовка, не выполняя лишних операций ввода-вывода.
Это действительно так просто, как вызвать 'ServletResponse.setContentType'. Это как если бы ответ сбрасывался после этого. Я пробовал 'close()' и 'flush()' на 'OutputStream', но не повезло. На самом деле заголовок 'Content-length' не появляется после вызова' flush() '.. Реализация CMS Filter разрешает только редактирование разметки HTML (без доступа к объекту ответа там). – gorn