如何确保响应中存在某些http标头

时间:2016-11-22 17:14:52

标签: java spring spring-security spring-boot

我是春天的新人,所以请原谅我的无知。

我想确保应用程序的每个响应都包含以下标题:

Content-Type → application/json;charset=UTF-8
Date →Tue, 22 Nov 2016 16:30:21 GMT

有一种简单的方法可以做到这一点,我错过了吗?任何建议或可能的解决方案都会很棒。谢谢大家:)

2 个答案:

答案 0 :(得分:1)

我不确定这是否适合你,因为我无法测试它。我确信的是,你可以做到,最简单的方法是:

创建一个spring拦截器并覆盖postHandle方法。

试试这个:

拦截班:

包com.mkyong.common.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class MyInterceptor extends HandlerInterceptorAdapter{


    public void postHandle(
        HttpServletRequest request, HttpServletResponse response,
        Object handler, ModelAndView modelAndView)
        throws Exception {

        response.setHeader("Content-Type","application/json;charset=UTF-8");
    }
}

这里是您可以设置的标题fields的列表,不要忘记将此类声明为spring bean。

<interceptors>
        <interceptor>
            <mapping path="/**" />
            <beans:bean class="package.MyInterceptor"></beans:bean>
        </interceptor>
</interceptors>

答案 1 :(得分:1)

所以,我通过创建一个自定义过滤器来解决这个问题:

@Component
public class ResponseHeaderFilter implements Filter {
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {

  }

  @Override
  public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
      throws IOException, ServletException {

    HttpServletResponse response = (HttpServletResponse) resp;

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z");
    String dateString = simpleDateFormat.format(UnixTime.now() * 1000);

    response.setHeader("Date", dateString);
    response.setHeader("Content-Type", "application/json;charset=UTF-8");

    chain.doFilter(req, resp);

  }

  @Override
  public void destroy() {

  }
}

然后在代码库中创建了另一个自定义过滤器的另一个问题。所以我在这篇博文的帮助下解决了这个额外的问题: http://mtyurt.net/2015/07/15/spring-how-to-insert-a-filter-before-springsecurityfilterchain/。希望这有助于某人:)