Ну, я понял это ... Вроде ...
Оказывается, та же проблема с Jetty и Tomcat (полагал, что это может быть проблема с контейнером). Итак ...
Отлажено, чтобы гарантировать, что объект ответа содержал правильное значение заголовка вплоть до возврата Spring обратно в контейнер. Результат: экземпляр HttpServletResponse по-прежнему имел правильное значение заголовка.
Я обнаружил в своем коде, что вызывал response.setContentLength()
ДО того, как я что-то делал с заголовками. Если я это закомментирую, все будет нормально.
Итак, остается загадкой, почему вызов response.setContentLength()
блокирует вещи и не позволяет изменять заголовки? Я не думал, что тело контента имеет какое-либо отношение к другим заголовкам.