Принудительное кодирование в Tomcat

61
3

Я переношу приложение для клиента в Tomcat 6. Во время тестирования мы обнаружили, что некоторые из их клиентов ожидают, что ответ всегда будет помечен, то есть Transfer-encoding: chunked. Тем не менее, Tomcat не всегда использует закодированное кодирование и иногда использует Content-Length вместо этого, я предполагаю, потому что размер ответа достаточно мал, чтобы он знал всю длину при отправке заголовков.

Я видел множество вопросов/ответов о том, как отключить закодированную кодировку, но у меня есть противоположная проблема. Я знаю, что это не идеальный способ принудительно кодировать кодировку в каждом ответе и что клиент должен быть полностью совместим с спецификацией http1.1 и принимать любую кодировку, но я просто пытаюсь выяснить, есть ли какая-либо простая конфигурация, которую я могу чтобы обеспечить желаемое поведение.

Я использую только Tomcat и стандартный http-коннектор. Я просмотрел атрибуты соединителя и играл с буфером и сокет-буфером без везения.

Есть ли что-нибудь, что я могу сделать, чтобы навязать ответы?

спросил(а) 2021-01-19T16:55:42+03:00 2 месяца, 3 недели назад
1
Решение
75

На всякий случай, когда кто-то еще сталкивается с этим, я нашел хакерское решение. Я сразу же очищаю выходной поток, прежде чем писать что-либо ему. Это заставляет Tomcat немедленно отправлять заголовки ответов и использовать закодированную кодировку. Я знаю, что он хромой, потому что это означает, что он сразу же отправляет код состояния 200, прежде чем я даже обработаю его, но это единственный способ, который я смог найти для принудительной кодировки.

ответил(а) 2021-01-19T16:55:42+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема