如何为使用 Spring Boot 进行的应用程序中的每个调用设置响应 header ?
我想尝试使用过滤器来拦截所有调用并能够设置响应 header 。
我按照指南 Disable browser caching HTML5 ,但只设置请求 header ,并不总是如此。
最佳答案
有三种方法可以做到这一点:
@ Controller
@RequestMapping(值 = DEFAULT_ADMIN_URL + "/xxx/")
公共(public)类 XxxController
……
@ModelAttribute
公共(public)无效 setResponseHeader(HttpServletResponse 响应) {
response.setHeader("缓存控制", "无缓存");
……
}
或者
@RequestMapping(value = "/find/employer/{employerId}", 方法 = RequestMethod.GET)
public List getEmployees(@PathVariable("employerId") 长的employerId,最终的HttpServletResponse 响应) {
response.setHeader("缓存控制", "无缓存");
return employeeService.findEmployeesForEmployer(employerId);
}
@零件
公共(public)类过滤器扩展了OncePerRequestFilter {
……
@覆盖
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
抛出 ServletException,IOException {
//response.addHeader("Access-Control-Allow-Origin", "*");
//response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");//HTTP 1.1。
response.setHeader("Cache-Control", "no-store");//HTTP 1.1。
response.setHeader("Pragma", "no-cache");//HTTP 1.0。
response.setHeader("过期", "0");//代理。
filterChain.doFilter(request, response);
}
}
公共(public)类 HeaderInterceptor 扩展 HandlerInterceptorAdapter {
@覆盖
公共(public) bool preHandle(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,对象处理程序){
httpServletResponse.setHeader("Cache-Control", "no-store");//HTTP 1.1。
httpServletResponse.setHeader("Pragma", "no-cache");//HTTP 1.0。
httpServletResponse.setHeader("过期", "0");//代理。
返回真;
}
}
@覆盖
公共(public)无效添加拦截器(拦截器注册表){
……
registry.addInterceptor(new HeaderInterceptor());
}
我希望我有帮助!
关于spring-boot - 在 Spring Boot 中设置响应头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49430853/