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 相关文章推荐
ConstraintValidator类如何实现自定义注解校验前端传参
Jun 18 Java/Android
springboot如何初始化执行sql语句
Jun 22 Java/Android
解决SpringBoot文件上传临时目录找不到的问题
Jul 01 Java/Android
Log4j.properties配置及其使用
Aug 02 Java/Android
spring cloud 配置中心native配置方式
Sep 25 Java/Android
关于ObjectUtils.isEmpty() 和 null 的区别
Feb 28 Java/Android
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
Apr 13 Java/Android
Elasticsearch Recovery 详细介绍
Apr 19 Java/Android
Java版 单机五子棋
May 04 Java/Android
Java Spring Lifecycle的使用
May 06 Java/Android
Java死锁的排查
May 11 Java/Android
Springboot集成kafka高级应用实战分享
Aug 14 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
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
python中import学习备忘笔记
2017/01/24 Python
使用Python生成XML的方法实例
2017/03/21 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
How TDD works
2012/09/30 面试题
执行力心得体会
2013/12/31 职场文书
公开承诺书格式
2014/05/21 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
团代会开幕词
2015/01/28 职场文书
事业单位聘任报告
2015/03/02 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
2016年父亲节寄语
2015/12/04 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
正则表达式拆分url实例代码
2022/02/24 Java/Android
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android