首页 » 网站推广 » phpcurlexpect技巧_Spring Cloud Gateway网关无法返回响应数据与Expect请求参数

phpcurlexpect技巧_Spring Cloud Gateway网关无法返回响应数据与Expect请求参数

duote123 2024-12-05 0

扫一扫用手机浏览

文章目录 [+]

对付100-continue这个字段,RFC文档(http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3)是这么阐明的:它可以让客户端在发送要求数据之前去判断做事器是否乐意吸收该数据,如果做事器乐意吸收,客户端才会真正发送数据。
这么做的缘故原由是如果客户端直接发送要求数据,但是做事器又将该要求谢绝的话,这种行为将带来很大的资源开销。

所以为了避免这种情形,libcurl在发送大于1024字节的POST要求时采取了这种方法。
但是相对的,它会引起要求延迟的加大,其余并不是所有的server都会精确处理并且应答100-continue,比如lighttpd,就会返回417 Expectation Failed,造成要求处理出错。

phpcurlexpect技巧_Spring Cloud Gateway网关无法返回响应数据与Expect请求参数

如果确定做事器不会谢绝1024个字节以上的POST要求,就可以不该用该方法,而且也可以避免以上提到的两个副浸染。

phpcurlexpect技巧_Spring Cloud Gateway网关无法返回响应数据与Expect请求参数
(图片来自网络侵删)

办理办法:

(1)阻挡Gateway转发Expect header要求参数

可以在Spring Cloud Gateway中阻挡转发Expect要求参数,在路由中添加如下代码即可:

.filters((t)->t.removeRequestHeader("Expect"))

(2)在application.yml 配置文件中添加配置

如下所示,添加filter配置-RemoveRequestHeader。

spring: cloud: gateway: routes: - id: removerequestheader_route uri: https://example.org filters: - RemoveRequestHeader=Expect

加上这段就好了,实在要求流程是能走通的。
只是要求的时候带有Except没有数据返回。
但是如果不走网关直接调用微做事的话,Spring Boot项目是能处理的。
估计是Gateway是基于Netty的缘故原由,也便是说这个可能是Netty引发的bug。

(3)在发起要求时,就取消Expect要求参数

示例代码如下,取消Expect要求参数:

HttpWebRequest request = WebRequest.Create(uri.Uri) as HttpWebRequest;

reqrequest.ServicePoint.Expect100Continue = false; // 取消100-continue

标签:

相关文章

PHP台球游戏技巧_你这么Diao你们老板知道吗

你是不是已经对日日加班人为不涨的老板无语了。你有极强的策划能力却每天守着打印机!你的文思如泉涌却一贯只让你端茶。怀才不遇,学无所用...

网站推广 2024-12-09 阅读0 评论0