Необходимо установить заголовки HTTP условно на ответ сервлета - PullRequest
1 голос
/ 08 декабря 2010

Я хочу установить заголовки HTTP в зависимости от типа ответа. Моя проблема в том, что некоторые отклики фиксируют свои заголовки, прежде чем я могу установить свои. Любые предложения о том, как справиться с этим?

1 Ответ

1 голос
/ 08 декабря 2010

Одна идея состоит в том, чтобы установить заголовок ответа в объекте ответа в фильтре перед вызовом сервлета.

Другая задача - предоставить сервлету оболочку ответа, которая предотвращаетреальный ответ от фактического совершения.Это может повлечь за собой буферизацию тела ответа в памяти.

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


Должен ли я буферизовать весь ответ, предоставив свой собственный выходной поток оболочке?Могу ли я переписать flush () или что-то в этом роде?

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

Я беспокоюсь о буферизации, вызывающей проблемы с производительностью

Да, это вполне возможно, хотя вам нужно будет просмотреть все веб-приложение, чтобы определить, является ли это значительным.

С точки зрения производительности, лучшее решение - заставить сервлет установить сам заголовок.

...