Spring春风拂面系列---SpringBoot 设置response header的方法总结
主要分为两类,一是单个响应增加响应头,而是对所有响应增加响应头
单个响应
如果我们要在单个请求响应response增加header,可以使用httpServletResponse 或者 ResponseEntity objects.
Using HttpServletResponse
We simply have to add the HttpServletResponse object to our REST endpoint as an argument, then use the addHeader() method:
@GetMapping("/http-servlet-response")
public String usingHttpServletResponse(HttpServletResponse response) {response.addHeader("Baeldung-Example-Header", "Value-HttpServletResponse");return "Response with header using HttpServletResponse";
}
Using ResponseEntity
In this case, let's use the BodyBuilder provided by the ResponseEntity class:
@GetMapping("/response-entity-builder-with-http-headers")
public ResponseEntity<String> usingResponseEntityBuilderAndHttpHeaders() {HttpHeaders responseHeaders = new HttpHeaders();responseHeaders.set("Baeldung-Example-Header", "Value-ResponseEntityBuilderWithHttpHeaders");return ResponseEntity.ok().headers(responseHeaders).body("Response with header using ResponseEntity");
}
所有响应
1. 通过Filter
Now let's imagine we want to set a particular header to many of our endpoints.
Of course, it would be frustrating if we have to replicate the previous code on each mapping methods.
A better approach to accomplish this is by configuring a Filter in our service:
@Component
public class AddResponseHeaderFilter extends OncePerRequestFilter {@Overrideprotected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,FilterChain filterChain) throws ServletException, IOException {httpServletResponse.addHeader("X-Frame-Options", "DENY");httpServletResponse.addHeader("Cache-Control", "no-cache, no-store, must-revalidate, max-age=0");httpServletResponse.addHeader("Cache-Control", "no-cache='set-cookie'");httpServletResponse.addHeader("Pragma", "no-cache");filterChain.doFilter(httpServletRequest, httpServletResponse);}
}
2.通过Interceptor
public class HttpResponseInterceptorHandler implements HandlerInterceptor {// 实现HandlerInterceptor 或者 继承HandlerInterceptorAdapter都可以,如果想看着简洁就使用后者@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {response.addHeader("content-test","123");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}
注意:1,在postHandle在添加header已经没有意义 2,切记preHandle返回值一定要是true
Spring春风拂面系列---SpringBoot 设置response header的方法总结相关推荐
- Spring春风拂面系列---SpringBoot之@EnableAutoConfiguration注解
首先Spring Boot项目中都会如下启动类: @SpringBootApplication public class Application { public static void main(S ...
- 【spring源码系列-05】refresh中prepareRefresh方法的执行流程
Spring源码系列整体栏目 内容 链接地址 [一]spring源码整体概述 https://blog.csdn.net/zhenghuishengq/article/details/13094088 ...
- springboot设置拦截器的方法
springboot设置拦截器的方式: 1.编写一个类,在类上面加上@Configuration注解,然后继承 WebMvcConfigurerAdapter. 重写父类的方法:addIntercep ...
- Spring全家桶系列–[SpringBoot入门到跑路]
//本文作者:cuifuan Spring全家桶----[SpringBoot入门到跑路] 对于之前的Spring框架的使用,各种配置文件XML.properties一旦出错之后错误难寻,这也是为什么 ...
- 【Java进阶营】Spring全家桶系列–[SpringBoot入门到跑路]
Spring全家桶----[SpringBoot入门到跑路] 对于之前的Spring框架的使用,各种配置文件XML.properties一旦出错之后错误难寻,这也是为什么SpringBoot被推上主流 ...
- Spring Boot教程系列(ImportNew )
ImportNew Spring Boot教程系列 SpringBoot (一) :入门篇--http://mp.weixin.qq.com/s/hAJmvrYfS6OehMYVgqpqkw Spri ...
- Spring Boot教程系列 ImportNew
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Impo ...
- ImportNew Spring Boot教程系列
ImportNew Spring Boot教程系列 SpringBoot (一) :入门篇--http://mp.weixin.qq.com/s/hAJmvrYfS6OehMYVgqpqkw Spri ...
- Spring技术栈系列教程-- SpringMVC 、SpringBoot 、SpringCloud
转载来源:https://mp.weixin.qq.com/s/N507Cfb_mbkGvHtg_FIaVg Spring Boot 系列 什么是 Spring Boot? 告诉你,Spring Bo ...
最新文章
- 【Linux】在虚拟机上安装CentOS7
- linux内核使用scons构建,如何使用scons进行交叉构建
- sql查询时间大于某一时间_查询时间从24分钟到2秒钟:记一次神奇的SQL优化
- 比尔·盖茨:如果你想了解硅谷,就看《硅谷》吧
- java编程打印以下图形,分享java打印简单图形的实现代码
- UVA - 12569 Planning mobile robot on Tree (EASY Version) BFS
- javascript 表达式和运算符 (二)
- 优化搜索排序结果从而“ 提升CTR、CVR业务指标”
- 【算法】CRC 循环冗余校验
- Matplolib subplot 子图控制
- JAVA虚拟机类加载机制之类加载的时机双亲委派模型
- c语言实验数据类型体会,实验1-C语言开发环境使用和数据类型、运算符、表达式-实验总结与体会...
- redis的配置文件解释
- 理解 asyncio 来构建高性能 Python 网络程序 - Ricequant米筐量化
- 【PTA】7-9 句子首字母变大写(python)
- Win10用Windows照片查看程序(照片查看器)打开图片
- sincerit 王者荣耀(01背包)
- iOS-规避iOS审核4.3规则的重心
- 利用selenium与etree抓取必应图片
- 杜拉拉升职记-选段-如何来定位一家公司以及所谓的中产阶级生活