gateway遇到请求头Expect=100-continue 一直卡住


前两天项目遇到个php请求后台服务,然后一直卡住返回不了参数的问题,

postman请求正常,但是php用curl post请求就会一直卡住,

php程序员抓破脑袋也没想出来到底是什么情况,最后看了下请求头发现多了一个Expect=100-continue,

原来在请求超过1024字节的数据时,curl会先发送个请求头,询问服务器是否接受请求。

但gateway并没有返回应答,所以就一直卡住。

解决方法有很多,比如gateway配置路由中删除请求头,php主动设置Expect=""。

我就简单粗暴一点直接在代码中把Expect清掉了。

@Component
public class MyRequestGlobalFilter implements GlobalFilter, Ordered {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        ServerHttpRequest request = exchange.getRequest().mutate()
                .headers(httpHeaders -> {
                    httpHeaders.remove("Expect");
                })
                .build();
                
        return chain.filter(exchange.mutate()
                .request(request.mutate()
                        .build()).build());
    }

    @Override
    public int getOrder() {
        return -1000;
    }
}

 

 

贴一个讲的比较明了的文章

https://blog.csdn.net/qq_25933249/article/details/102826525


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM