2015-03-25 15 views
0

我必須添加Cache-Control頭到基於Http Response代碼的Spring MVC中設計的rest API。如果響應代碼是200,請添加標題,否則不添加。我想添加一個頭到HTTP響應,基於Spring MVC中的Http狀態代碼

我不想在客戶端緩存響應,如果它不是200

這是不可能在過濾器/攔截器,作爲響應已經從控制器提交,因此不能改變響應狀態。

是否有任何其他方式來添加標題後控制器?

回答

1

您可以擴展org.springframework.web.filter.OncePerRequestFilter以添加cache-control標題。

public class CacheControlHeaderFilter extends OncePerRequestFilter { 
    @Override 
    protected void doFilterInternal(HttpServletRequest request, 
           HttpServletResponse response, FilterChain filterChain) { 
     // Add the header here based on the response code 
    } 
} 

聲明此篩選器爲您的配置中的spring bean。

<bean id="cacheControlHeaderFilter" class="*.*.CacheControlHeaderFilter" /> 

插件過濾器在web.xml:

<filter> 
    <filter-name>cacheControlHeaderFilter</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>cacheControlHeaderFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping>