Postman v9.21.2调用443端口gRPCS端点长期无响应问题咨询
问题背景
现有gRPC端点hello.mydomain.io同时暴露两个服务端口:
- 80端口:非加密明文gRPC端口
- 443端口:配置公开可信证书的TLS加密gRPCS端口
使用grpcurl工具访问两个端口均可正常连通,执行服务列表查询的操作结果如下:
me:~$ ./grpcurl -v hello.mydomain.io:443 list addsvc.Add grpc.gateway.examples.examplepb.ABitOfEverythingService grpc.reflection.v1alpha.ServerReflection grpcbin.GRPCBin hello.HelloService me:~$ ./grpcurl -v --plaintext hello.mydomain.io:80 list addsvc.Add grpc.gateway.examples.examplepb.ABitOfEverythingService grpc.reflection.v1alpha.ServerReflection grpcbin.GRPCBin hello.HelloService
故障现象:使用v9.21.2版本Postman调用接口时,80端口非加密端点可正常工作,443端口安全端点会一直卡在Invoking method...状态无响应。
故障根因
该问题是Postman v9.21.x版本gRPC模块的已知适配问题导致,核心原因有两点:
- gRPC请求默认走系统代理时,大部分系统代理不支持HTTP/2 CONNECT隧道透传gRPC TLS流量,导致握手阶段卡住
- 协议选择默认设为Auto时,TLS握手阶段不会主动携带ALPN扩展的
h2协议标识,部署在支持多协议分流的网关(Nginx、Envoy、云负载均衡)后的gRPC服务会将请求识别为HTTP/1.1流量,无法正确响应gRPC请求。
修复配置步骤
按顺序操作即可解决问题:
- 关闭代理配置
- 打开Postman设置页,进入
Proxy选项卡 - 取消勾选Use system proxy(使用系统代理)选项,SSL certificate verification(SSL证书验证)保持开启即可(公开可信证书无需关闭校验)
- 保存设置后重试请求
- 打开Postman设置页,进入
- 强制指定HTTP/2协议
- 如果第一步操作后仍卡住,打开对应gRPC请求的编辑页,在URL输入栏旁找到协议选择下拉框(默认显示
Auto) - 手动选择
HTTP/2选项,不要保留Auto或选择HTTP/1.1 - 重新通过服务反射拉取接口定义后再次发起调用
- 如果第一步操作后仍卡住,打开对应gRPC请求的编辑页,在URL输入栏旁找到协议选择下拉框(默认显示
- 校验TLS版本配置
- 进入Postman设置的
General选项卡,找到TLS version配置项 - 选择
TLS 1.2 and higher,不要限制为低版本TLS,当前gRPCS服务普遍要求TLS 1.2及以上版本才能正常握手。
- 进入Postman设置的
内容的提问来源于stack exchange,提问作者Cesar
相关产品推荐
相关产品推荐

