千家信息网

怎么使用SpringBoot的拦截器来获取header的内容

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"怎么使用SpringBoot的拦截器来获取header的内容",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"怎么使用SpringB
千家信息网最后更新 2026年11月01日怎么使用SpringBoot的拦截器来获取header的内容

这篇文章主要为大家展示了"怎么使用SpringBoot的拦截器来获取header的内容",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"怎么使用SpringBoot的拦截器来获取header的内容"这篇文章吧。

分析

既然需要动态获取那么只有两种方式:要么每次下游请求过来时从请求头中获取,要么定义统一的拦截器自动获取。

实现

那么我们就先来实现一下吧。

第一种比较简单,直接使用springboot获取请求头的方式,从controller方法入口处使用: @RequestHeader(value = "xxxx",required = false) String appUser的方式获取请求头

代码如下:

@RequestMapping(name = "获取用户详情信息",value = "/getUserDetail",method=GET) public String getUserDetail(@RequestHeader(value = "app-user",required = false) String appUser, @RequestParam(name = "search") String search){            log.info("------>拿到的请求头是:"+appUser);         return "SUCCESS"; }

此种方法虽然可以获取,但是太过low b,而且如果有几十个接口那么都要这么写,过于累赘

还是使用拦截器的方式吧

具体如下:

首先,定义一个拦截器,需要实现HandlerInterceptor,其中包含preHandler以及afterCompletion分别对应调用前以及调用完成后

package com.xxxx.cc.admin.interceptor;     import com.alibaba.fastjson.JSONObject; import com.ddmc.cc.admin.support.ThreadLocalUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor;   import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;   /*** Copyright (C), 2017-2021 * Author: sjugg* Date: 2021/5/19 10:39* FileName: AuthInterceptor* Description: 交易前置拦截器*/ @Component @Slf4j public class AuthInfoInterceptor implements HandlerInterceptor {       @Override     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {         String userInfo = request.getHeader("app-user");         log.info(">>>>>>>拦截到api相关请求头<<<<<<<<"+userInfo);         if(StringUtils.isNotEmpty(userInfo)){             //直接搂下来,放到ThreadLocal中 后续直接从中获取            ThreadLocalUtils.set(MaiCaiApiConstants.MAI_CAI_APP_USER,userInfo);         }         return true;//注意 这里必须是true否则请求将就此终止。     }      @Override     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {         //移除app-user         ThreadLocalUtils.remove("app-user");         log.info("移除请求头中的app-user:"+ThreadLocalUtils.get("app-user"));     } }

后面只要从ThreadLocal中按key去拿就可以了。

另外需要做的是

添加web过滤器

1、添加web 过滤器,管理过滤的类,以及过滤的请求路径

2、继承WebMvcConfigurationSupport 类 和上面一样Generate,复写父类的方法 addInterceptors

3、通过registry.addInterceptor拦截类,addPathPatterns拦截路径,excludePathPatterns添加允许路径

这里我拦截的是以xxxx开头的请求。

package com.ddmc.cc.admin.config;  import com.ddmc.cc.admin.interceptor.AuthInfoInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;   /*** ** @author sjugg* @since 2021/5/13 4:43 下午*/ @Configuration public class WebConfig implements WebMvcConfigurer {      @Autowired     private AuthInfoInterceptor authInfoInterceptor;      @Override     public void addInterceptors(InterceptorRegistry registry) {         registry.addInterceptor(authInfoInterceptor).addPathPatterns("/xxxx/*");     } }

执行效果如下:

请求头里设置app-user信息

可以看到Controller中已经拿到请求头里的信息

获取head的代码:

@RequestMapping(name = "获取用户详情信息",value = "/getUserDetail",method=GET) public String getUserDetail(@RequestParam(name = "search") String search){     log.info("-----> heard info here: "+ThreadLocalUtils.get("app-user"));     return "SUCCESS";}

方法执行完之后对应的threadlocal变量也被清除

以上是"怎么使用SpringBoot的拦截器来获取header的内容"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

拦截器 内容 信息 方式 方法 篇文章 路径 代码 用户 要么 详情 过滤器 学习 帮助 累赘 从中 入口 入口处 动态 变量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 平安科技 互联网 互联网科技英文翻译 多迪互联网科技有限公司 甘肃拓世互联网科技有限公司 深圳卡尔迅互联网科技有限公司怎么样 互联网科技生活的内容 安控科技rtu产品工业互联网 互联网为啥属于高科技 互联网5g黑科技有哪些 中国互联网十大科技股排名 互联网金融科技名词解释 区块链结合互联网科技 北京市互联网新科技 上海同邻互联网科技有限公司规模 萌小萌互联网科技河南有限公司 银川新华互联网科技学校原画 黑龙江互联网科技公司 互联网科技创新方面的资料 颐高云石互联网科技 互联网科技公司起名 互联网属科技 互联网科技作文 新华互联网科技2019 互联网金融中的现代科技 南平创想时代互联网科技有限公司 本届互联网博览会上的黑科技 畅思互联网科技 云鲸互联网络科技有限公司 国产互联网科技公司
0