无需登录 数据私有 本地保存

gRPC-Web 反射调用工具 - 浏览器端RPC测试

11
0
0
0

gRPC-Web 反射调用工具

浏览器端 RPC 测试 · 支持反射发现 · Protobuf/JSON

gRPC-Web v1
连接设置
http://
服务与方法
UNARY
路径预览:/package.Service/Method
请求构建
Metadata (Headers)
响应
等待发送请求...
请求历史

暂无历史记录

常见问题 & 知识点

gRPC-Web 是 gRPC 的浏览器端实现。由于浏览器无法直接使用 HTTP/2 的所有特性(如双向流),gRPC-Web 通过代理(如 Envoy、grpc-gateway)将请求转换为标准 gRPC 调用。它支持 Unary 和 Server-Side Streaming,但不支持 Client-Side Streaming 和 Bidirectional Streaming。Content-Type 通常为 application/grpc-web+protoapplication/grpc-web+json

gRPC Server Reflection 是一种协议,允许客户端动态查询服务器上可用的 gRPC 服务和方法。服务名称为 grpc.reflection.v1alpha.ServerReflectiongrpc.reflection.v1.ServerReflection。通过反射,客户端无需预先编译 proto 文件即可发现服务结构,极大方便了调试和测试。

1) 需要 gRPC-Web 代理(如 Envoy)将请求转发到后端 gRPC 服务。2) 服务器必须配置正确的 CORS 头部(Access-Control-Allow-OriginAccess-Control-Allow-Headers 等)。3) 如果使用 TLS,需要有效的 HTTPS 证书。4) 对于 Streaming 调用,需要代理支持相应的流式传输。

gRPC-Web 使用5字节帧前缀:1字节压缩标志(0x00=未压缩,0x01=压缩)+ 4字节大端序长度。响应包含数据帧(可能多个)和一个 Trailer 帧(压缩标志最高位为1,即 0x80)。Trailer 包含 grpc-statusgrpc-message 等关键信息。状态码 0 表示成功。

在 Envoy 配置中添加 CORS 支持,或使用 grpc-gateway 自动处理。关键头部:Access-Control-Allow-Origin: *Access-Control-Allow-Methods: POST, OPTIONSAccess-Control-Allow-Headers: content-type, x-grpc-web, x-user-agentAccess-Control-Expose-Headers: grpc-status, grpc-message。本地开发可使用浏览器插件临时绕过 CORS。

JSON模式application/grpc-web+json):请求和响应均为 JSON 格式,易于调试,但需要代理支持(Envoy 1.20+ 支持)。Proto二进制模式application/grpc-web+proto):使用 Protobuf 二进制编码,体积更小、性能更好,是 gRPC-Web 的标准格式。本工具默认使用 JSON 模式以方便调试。