前兩天項目遇到個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