我想要做的就是處理後,該請求被處理後添加一個新的頭到響應。我需要檢查處理的HttpStatus
代碼(在我的情況下是401未授權)並添加一個新的標題。我知道春天有攔截器,但在document規定的反應不能被修改:春天 - 修改爲每個請求標題(的postHandle)
注意的HandlerInterceptor的的postHandle方法並不總是非常適用於和@ResponseBody方法ResponseEntity使用。在這種情況下,HttpMessageConverter會在調用postHandle之前寫入並提交響應,從而無法更改響應,例如添加標題。相反,應用程序可以實現ResponseBodyAdvice,並將其聲明爲@ControllerAdvice bean或直接在RequestMappingHandlerAdapter上進行配置。
那麼,我實施了ResponseBodyAdvice
。是的,它允許正文修改,但我無法管理修改標題,事件找不到控制器返回的狀態代碼。
使用servlet過濾器的其他選項也不成功。我需要在filterChain.doFilter(servletRequest, servletResponse);
調用後添加標題。但它再次不會修改標題值。有沒有辦法完成這個簡單的任務?
你說的是servlet過濾器。你在哪裏添加了過濾器?你能否快速檢查http://stackoverflow.com/a/16191770/2231632是否適合你? – prabugp
我試過了。我在'filterChain.doChain()'之後添加頭部,因爲在鏈完成後我需要狀態碼信息。它不起作用,Spring提交響應並且不允許修改過濾器。 – mtyurt
這不是任何與spring有關的東西,但是隻要響應已經(部分)發送給客戶端,就不會再修改頭信息。您只能在此之前更改它。但我認爲你自己回來了401,那麼爲什麼不在這個位置簡單地做? –