spring cloud gateway基于请求头中的字段expect引起的bug

最近在c##客户端通过spring cloud gateway网关调用其他服务的时候发生了个bug。经过抓包发现是由于c##使用的http的库在每个请求头中都带了expect: 100-continue这个请求头。导致请求无法响应。

解决办法:

spring:
  cloud:
    gateway:
      default-filters:
        #移除Expect 导致请求无法返回
        - RemoveRequestHeader=Expect

expect: 100 continue的作用:

在某些场景下,服务端可能不会接收客户端数据过大的请求,于是客户端会先想服务端发送一个带请求头expect :100 continue的请求,如果服务端愿意接收这个请求的话,就返回100 continue状态码告诉客户端, 客户端就再次发送请求,有点类似于跨域过程的options请求,是一个预检请求, 只有得到客户端的允许之后才能发送真正的请求。上述过程属于一种对请求的优化。

其中在http请求中1xx状态码表示信息提示。

http的其他的提示:

1xx 信息提示
2xx 成功
3xx 重定向
4xx 客户端错误
5xx 服务器错误

但是上述请求在不适用网关进行转发的时候不会产生,网上有人说可能是属于spring cloud gateway的一个bug。

参考文章:https://www.cnblogs.com/nangcr/p/informational-responses-status-code-100-in-http.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值