chenpingtai 2021-05-15 14:09 采纳率: 0%
浏览 1590

gateway的ServerHttpResponseDecorator后不起作用?

@Component
public class CypherFilter implements GlobalFilter, Ordered {

    private int order = 10;

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {

        System.out.println("====================================");
        ServerHttpResponse originalResponse = exchange.getResponse();
        ServerHttpResponseDecorator decoratedResponse = new ServerHttpResponseDecorator(originalResponse) {
            @Override
            public Mono<Void> writeWith(Publisher<? extends DataBuffer> body) {
                System.out.println("++++++++++++++++++++=");
                this.getHeaders().add("aaaaa", "xxxxx");
                return super.writeWith(body);
            }
        };
        return chain.filter(exchange.mutate().response(decoratedResponse).build());
    }

    @Override
    public int getOrder() {
        return this.order;
    }
}

基于网关gateway,想做个需求,拿到后端返回的值,进行修改然后返回给客户端。比如后端返回aaaa,拿到aaa然后进行加密返回给浏览器。做了个demo,写了这样的一个过滤器想做实验,但是writeWith方法却无法执行。

也就是 System.out.println("====================================");能打印。而

System.out.println("++++++++++++++++++++="); 却没执行。

整个demo里就写了这个一个过滤器,而且能正常跑,能返回给浏览器,后端返回的值。但是就是进不去writeWith。

尝试在writeWith里写各种东西都不被执行。不知道原因何在?

展开全部

  • 写回答

3条回答 默认 最新

  • CSDN专家-三岁丫 2021-05-15 14:48
    关注
    // 加一个这个呢
        @Override
        public int getOrder() {
            // -1 is response write filter, must be called before that
            return -2;
        }
    评论
  • Singleton- 2022-04-22 03:36
    关注

    果然好了,牛逼

    评论
  • 有问必答小助手 2021-05-17 03:49
    关注

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部