2016-08-10 2 views
0

Приложение, в котором я работаю, работает таким образом, что запрос отправляется из браузера на сервер A, сервер A вносит некоторые изменения в запрос и перенаправляет его на сервер B. Сервер B возвращает ответ серверу A, который, в свою очередь, возвращает его в браузер (Browser < => Сервер A < => Сервер B).Удалить заголовок HttpServletResponse

На сервере AI необходимо изменить/удалить конкретный заголовок «access-control-allow-origin» из ответа, заданного сервером B. Я не могу сделать это в B, где создается ответ, поскольку я не имеют доступ к коду. Мне нужно сделать это в самом А.

Я попытался использовать HttpServletResponseWrapper (How do delete a HTTP response header?), но я думаю, что он полезен только тогда, когда заголовки уже не установлены. В моем случае заголовки установлены и должны быть изменены/удалены.

+0

У вас есть веб-сервер перед сервером A? – M4ver1k

+0

№ Сервер сам по себе является веб-сервером. Отвечаю ли я на ваш вопрос? –

+0

Я имею в виду, что-то вроде Apache, где мы можем использовать mod_headers и удалять заголовок. – M4ver1k

ответ

0

Удаление заголовка с любым из Servlet API почти невозможно, только решение, которое я вижу, если у вас есть Apache/Nginx (веб-сервер) в передней части Servlet контейнер использования mod_headers

RequestHeader unset HeaderName 

см это document для более подробной информации.

0

Попробуйте это:

((org.apache.catalina.connector.Response)response).getCoyoteResponse() 
    .getMimeHeaders() 
    .removeHeader("access-control-allow-origin"); 

getCoyoteResponse() получает базовый объект ответа, который является, где заголовки фактически хранятся в MimeHeaders объекте. У MimeHeaders есть удобный метод removeHeader, среди прочих.

Обратите внимание, что я действительно не проверял это, но похоже, что он должен работать. Кроме того, я нашел это в источнике Tomcat 8.0.26, YMMV с другой версией.