美文网首页
spring-cloud-gateway GlobalFilte

spring-cloud-gateway GlobalFilte

作者: zt_sole | 来源:发表于2020-06-30 10:51 被阅读0次

    使用spring-cloud-gateway GlobalFilter做访问控制拦截出现以下问题,做一个记录。

    在使用gateway 做路由拦截的时候发现有路由转发到微服务的时候发现前台post提交的数据在微服务中异常(格式转化出差),后经过查找资料找到解决方法,见 SpringCloud-gateway全局GlobalFilter获取post的请求参数
    同时(见图)添加表头设置

    image.png
    设置代码如下
     @Override
                    public HttpHeaders getHeaders() {
                        HttpHeaders headers = exchange.getRequest().getHeaders();
                        long contentLength = headers.getContentLength();
                        HttpHeaders httpHeaders = new HttpHeaders();
                        httpHeaders.putAll(super.getHeaders());
                        if (contentLength > 0) {
                            httpHeaders.setContentLength(contentLength);
                        } else {
                            httpHeaders.set(HttpHeaders.TRANSFER_ENCODING, "chunked");
                        }
                        return httpHeaders;
                    }
    

    但是在上传文件的时候发现,GlobalFilter 这里处理成功执行chain.filter(exchange)后对应的文件处理微服务一直没有相应,经过一番问题查找,
    忽然看到一篇说Undertow 与 Tomcat 的文章,见使用Spring Cloud Gateway填过的坑
    一看,我去,项目里面有的是Undertow

    在把Undertow注释,tomcat启用后 ,将 filter 里面的post提交数据处理代码删掉(就是【SpringCloud-gateway全局GlobalFilter获取post的请求参数】中设置的post数据处理代码),后功能正常了!!!
    文件可以正常上传、post也正常转发了, ()

    说到底就是没有好好了解过Spring Cloud Gateway采用了自家新推出的Web框架WebFlux。由于WebFlux底层是采用Reactive Netty的NIO框架,所以无论在网络编程方面与传统的WebMvc都有所不同,虽然WebFlux可以完全兼容旧的WebMvc写法,但这并不代表我们的代码可以完全迁移没有任何问题。

    又成长一点,(*^▽^*)

    相关文章

      网友评论

          本文标题:spring-cloud-gateway GlobalFilte

          本文链接:https://www.haomeiwen.com/subject/vqptqktx.html