我想根据Spring MVC中的Http Status代码为Http Response添加一个头

我必须基于Http Response代码将Cache-Control标头添加到Spring MVC中设计的rest API中。 如果响应代码为200,则添加标题,否则不添加。

我不希望客户端缓存响应,以防它不是200。

在filter/拦截器中不可能,因为响应已经从控制器提交,因此无法更改响应状态。

还有其他方法可以在控制器后添加标头吗?

您可以扩展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 } } 

在配置中将此filter声明为spring bean。

  

在web.xml中插入filter:

  cacheControlHeaderFilter org.springframework.web.filter.DelegatingFilterProxy   cacheControlHeaderFilter /*