Closed ncepuwanghui closed 3 years ago
正常情况,consumer从注册中心获取provider指定的序列化协议,provider根据header中额protoId去查ID_SERIALIZATION_MAP获取相应的Serialization,不会出现不一致。
我上面说的这个情形是,假如consumer端使用伪造篡改的、其他协议的数据发起请求
我觉得一般dubbo生产时都是内网环境,不太会出现篡改问题吧...
No feedback for a long time, please close the issue temporarily. If there is still a problem, you can reopen it.
Environment
Steps to reproduce this issue
当consumer端使用的序列化协议,和provider指定序列化协议不一致时,provider端判断只要是服务端支持的序列化协议,就会以consumer端指定的为准,忽略provider端指定的序列化协议。
如下图,服务端指定了序列化协议protobuf,consumer在调用时使用hessian2,发现服务端返回的Serialization是Hessian2Serialization,不是GenericProtobufSerialization。 (注: dubbo 2.6.9 没有protobuf,此处只是自行扩展测试,可忽略)
Expected Result
是否能增加配置开关,缺省默认只要服务端支持就可以。允许dubbo使用方决定要不要严格要求consumer使用provider指定的序列化协议。
或者,dubbo这样设计有其他缘由,可能我没有领会到,希望大家多多指点。