curl使用post方式访问Spring Cloud gateway报time out错误

Posted farmermao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了curl使用post方式访问Spring Cloud gateway报time out错误相关的知识,希望对你有一定的参考价值。

公司老的项目使用是php,要进行重构。其他团队使用php curl函数使用post方式调用Spring Cloud gateway 报time out错误。

但是使用postman测试是没有任何问题,php curl如果绕过网关直接访问接口也没有问题。结果发现了是因为:

使用Curl POST数据时,如果POST的数据大于1024字节,Curl并不会直接发起POST请求,而是分两步:

1、发送一个请求,Header中包含一个Expect:100-continue,询问Server是否愿意接受数据
2、接受到Server返回的100-continue回应后,才把数据Post到Server

这个也是Spring Cloud gateway一个Bug:https://github.com/spring-cloud/spring-cloud-gateway/issues/273

解决办法:配置路由转发的时候,去掉expect request Header

 .route("openapi_route", p -> p.path(ORDER_CENTER_API + "/openapi/**").filters(f->f.removeRequestHeader("Expect"))
         .uri("lb://order-xxxxx-service"))

以上是关于curl使用post方式访问Spring Cloud gateway报time out错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在curl方式下url请求域名使用指定ip地址来访问某个服务器

CURL模拟POST请求实例

curl 访问http请求

将数据从 POST Curl 插入 JAVA Spring

PHP使用curl请求实现post方式上传图片文件功能示例

curl post 用json方式