복붙노트

[SPRING] Http Response에 헤더를 추가하기 위해 Spring MVC의 Http Status 코드를 기반으로한다.

SPRING

Http Response에 헤더를 추가하기 위해 Spring MVC의 Http Status 코드를 기반으로한다.

Http Response 코드를 기반으로 Spring MVC로 설계된 나머지 API에 Cache-Control 헤더를 추가해야한다. 응답 코드가 200이면 추가하지 말아야합니다.

클라이언트가 응답을 캐싱하지 못하게합니다. 200이 아닌 경우에 대비하십시오.

응답은 컨트롤러에서 이미 커밋되었으므로 필터 / 인터셉터에서는 불가능하므로 응답 상태를 변경할 수 없습니다.

컨트롤러 뒤에 헤더를 추가하는 다른 방법이 있습니까?

해결법

  1. ==============================

    1.org.springframework.web.filter.OncePerRequestFilter를 확장하여 캐시 제어 헤더를 추가 할 수 있습니다.

    org.springframework.web.filter.OncePerRequestFilter를 확장하여 캐시 제어 헤더를 추가 할 수 있습니다.

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

    이 필터를 구성에서 스프링 빈으로 선언하십시오.

    <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>
    
  2. from https://stackoverflow.com/questions/29251549/i-want-to-add-a-header-to-http-response-based-on-the-http-status-code-in-spring by cc-by-sa and MIT license