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 14 Java/Android
spring项目中切面及AOP的使用方法
Jun 26 Java/Android
java基础——多线程
Jul 03 Java/Android
Lombok的详细使用及优缺点总结
Jul 15 Java/Android
java设计模式--七大原则详解
Jul 21 Java/Android
spring boot中nativeQuery的用法
Jul 26 Java/Android
Java 在生活中的 10 大应用
Nov 02 Java/Android
Java实现学生管理系统(IO版)
Feb 24 Java/Android
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
Mar 21 Java/Android
Java实现经典游戏泡泡堂的示例代码
Apr 04 Java/Android
Java实现注册登录跳转
Jun 16 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
PHP新手上路(二)
2006/10/09 PHP
分享PHP header函数使用教程
2013/09/05 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
jquery使用经验小结
2015/05/20 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
使用Vant完成Dialog弹框案例
2020/11/11 Javascript
python 中if else 语句的作用及示例代码
2018/03/05 Python
Python2与Python3的区别实例总结
2019/04/17 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
python中sys模块是做什么用的
2020/08/16 Python
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
英国运动风奢侈品购物网站:Maison De Fashion
2020/08/28 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
实习生单位鉴定意见
2013/12/04 职场文书
运动会班级口号
2014/06/09 职场文书
毕业生找工作求职信
2014/08/05 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
悬空寺导游词
2015/02/05 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS