Closed xiaofengfeifei closed 4 years ago
如果service端是Gzip压缩后的响应,请求的客服端解析报错gzip: invalid header! 然而如果不通过gateway网关方式,直接用客户端,请求服务端,没事儿。
查看网关源码得知,在client.input()的方法中做的rpc到http响应的转换。 其中err = res.Decode(client.r),payload已经做过解压缩处理了, 但是call.Metadata, call.Reply, _ = convertRes2Raw(res)中,响应头依然设置成了gzip压缩 if res.CompressType() == protocol.Gzip { m["Content-Encoding"] = "gzip" } 是不是问题在这里?
good found.
就是这个问题, payload已经unzip了,没必要设置头了。 rpcx代码我修改了
如果service端是Gzip压缩后的响应,请求的客服端解析报错gzip: invalid header! 然而如果不通过gateway网关方式,直接用客户端,请求服务端,没事儿。
查看网关源码得知,在client.input()的方法中做的rpc到http响应的转换。 其中err = res.Decode(client.r),payload已经做过解压缩处理了, 但是call.Metadata, call.Reply, _ = convertRes2Raw(res)中,响应头依然设置成了gzip压缩 if res.CompressType() == protocol.Gzip { m["Content-Encoding"] = "gzip" } 是不是问题在这里?