前两天项目遇到个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
gateway遇到请求头Expect=100-continue 一直卡住
原文:https://www.cnblogs.com/moerjiana/p/12776170.html