В моем приложении загрузки Spring я пытаюсь добавить заголовок к моему отклику в методе afterCompletion()
моего класса HandlerInterceptorAdapter
.Как добавить заголовок для ответа HTTP в Spring HandlerInterceptorAdapter?
Контроллер возвращает ResponseEntity<MyResource>
объекта, такие как:
return new ResponseEntity<>(mr, HttpStatus.OK);
после POST
запроса.
В перехватчике, когда я пытаюсь добавить заголовок к ответу, он не добавляется.
Однако, когда я изменить свой контроллер, чтобы вернуть ответ, как это:
return new ResponseEntity<>(HttpStatus.OK);
Затем он работает.
Почему я могу добавить заголовок, только если тело ответа отсутствует?
Есть ли способ добавить его, когда тело ответа присутствует?
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-handlermapping-interceptor –
Обратите внимание, что метод 'afterCompletion'' HandlerInterceptor' не всегда идеально подходит для использования с методами '@ ResponseBody' и' ResponseEntity'. В таких случаях «HttpMessageConverter» записывает и передает ответ до вызова 'afterCompletion', который делает невозможным изменение ответа, например, для добавления заголовка. Вместо этого приложение может реализовать «ResponseBodyAdvice» и либо объявить его как компонент «@ ControllerAdvice», либо настроить его непосредственно на «RequestMappingHandlerAdapter». –