SpringCloud Feign请求头删除修改的操作代码


Posted in Java/Android onMarch 20, 2022

Feign请求头修改删除操作

@Configuration
public class ClientConfiguration {
    @Bean
    public RequestInterceptor headerInterceptor() {
        return new RequestInterceptor() {
            @Override
            public void apply(RequestTemplate template) {
                HttpServletRequest httpServletRequest = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
                if (httpServletRequest.getRequestURI().contains(template.url())) {
                    try {
                        Field connectorField = ReflectionUtils.findField(SecurityContextHolderAwareRequestWrapper.class, "request");
                        connectorField.setAccessible(true);
                        FirewalledRequest firewalledRequest = (FirewalledRequest) connectorField.get(httpServletRequest);
                        if(Objects.isNull(firewalledRequest))
                            return;

                        Field firewalledField = ReflectionUtils.findField(FirewalledRequest.class, "request");
                        firewalledField.setAccessible(true);
                        RequestFacade requestFacade = (RequestFacade) firewalledField.get(firewalledRequest);
                        if(Objects.isNull(requestFacade))
                            return;

                        connectorField = ReflectionUtils.findField(RequestFacade.class, "request");
                        firewalledField.setAccessible(true);
                        Request connectorRequest = (Request) connectorField.get(requestFacade);
                        if(Objects.isNull(connectorRequest))
                            return;

                        Field coyoteField = ReflectionUtils.findField(Request.class, "coyoteRequest", org.apache.coyote.Request.class);
                        coyoteField.setAccessible(true);
                        org.apache.coyote.Request coyoteRequest = (org.apache.coyote.Request) coyoteField.get(connectorRequest);
                        if(Objects.isNull(coyoteRequest))
                            return;

                        Field mimeHeadersField = ReflectionUtils.findField(org.apache.coyote.Request.class, "headers", MimeHeaders.class);
                        mimeHeadersField.setAccessible(true);
                        MimeHeaders mimeHeaders = (MimeHeaders) mimeHeadersField.get(coyoteRequest);
                        mineHeadersHandle(mimeHeaders);
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                    List<String> contentTypeList = Lists.newArrayList("application/json;charset=UTF-8");
                    Map<String, Collection<String>> headers = ImmutableMap.of(HttpHeaders.CONTENT_TYPE, contentTypeList);
                    template.headers(headers);
                }
            }
        };
    }

    protected static void mineHeadersHandle(MimeHeaders mimeHeaders) {
        mimeHeaders.removeHeader(HttpHeaders.CONTENT_TYPE);
    }
}

到此这篇关于SpringCloud Feign请求头删除修改的操作代码的文章就介绍到这了,更多相关SpringCloud Feign请求头内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
详解Java实践之建造者模式
Jun 18 Java/Android
Java Dubbo框架知识点梳理
Jun 26 Java/Android
Spring Data JPA的Audit功能审计数据库的变更
Jun 26 Java/Android
Java spring单点登录系统
Sep 04 Java/Android
MyBatis配置文件解析与MyBatis实例演示
Apr 07 Java/Android
Android存储中最基本的文件存储方式
Apr 30 Java/Android
Spring Boot 实现 WebSocket
Apr 30 Java/Android
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
Jun 01 Java/Android
Java界面编程实现界面跳转
Jun 16 Java/Android
SpringBoot使用AOP实现统计全局接口访问次数详解
Jun 16 Java/Android
JDK8中String的intern()方法实例详细解读
Sep 23 Java/Android
Java结构型设计模式之组合模式详解
Sep 23 Java/Android
JavaWeb实现显示mysql数据库数据
关于Mybatis中SQL节点的深入解析
springboot 自定义配置 解决Boolean属性不生效
Mar 18 #Java/Android
使用Java去实现超市会员管理系统
Mar 18 #Java/Android
详解Spring Security中的HttpBasic登录验证模式
RestTemplate如何通过HTTP Basic Auth认证示例说明
Java实现二分搜索树的示例代码
You might like
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
探讨如何把session存入数据库
2013/06/07 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
web页面数据展示新想法(json)
2010/06/08 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
python实现名片管理系统项目
2019/04/26 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
高三英语教学反思
2014/01/13 职场文书
红色故事演讲稿
2014/05/22 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
2015年元旦标语大全
2014/12/09 职场文书
职工年度考核评语
2014/12/31 职场文书
通讯稿格式及范文
2015/07/22 职场文书
聘任书范文大全
2015/09/21 职场文书
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python