rpcxio / rpcx-gateway

http gateway for rpcx services. Clients in any programming languages can call them
Apache License 2.0
203 stars 40 forks source link

如果service端是Gzip压缩后的响应,请求的客服端解析报错gzip: invalid header。然而如果不通过gateway网关方式,直接用客户端,请求服务端,没事儿。 #18

Closed xiaofengfeifei closed 4 years ago

xiaofengfeifei commented 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" } 是不是问题在这里?

smallnest commented 4 years ago

good found.

就是这个问题, payload已经unzip了,没必要设置头了。 rpcx代码我修改了