我是春天的新人,所以请原谅我的无知。
我想确保应用程序的每个响应都包含以下标题:
Content-Type → application/json;charset=UTF-8
Date →Tue, 22 Nov 2016 16:30:21 GMT
有一种简单的方法可以做到这一点,我错过了吗?任何建议或可能的解决方案都会很棒。谢谢大家:)
答案 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/。希望这有助于某人:)