为什么浏览器不支持gRPC?

时间:2018-09-06 21:35:34

标签: grpc grpc-web

gRPC基于HTTP / 2,它(假设)已被浏览器广泛支持。因此,我认为浏览器中的gRPC应该没有问题。

但是,很明显这是有问题的。协议grpc web是不同的,因为“由于浏览器限制”而存在。还有许多博客文章描述了部署复杂的技术堆栈以使gRPC在浏览器中正常工作。

我错过了实际的问题-为什么gRPC不能仅在浏览器中工作?

2 个答案:

答案 0 :(得分:0)

大多数浏览器使用HTTP1.1,而GRPC仅适用于HTTP2。您可以使用nginx,envoy或traefic在逆向代理后面运行它,这与逆向代理后面经常使用Web套接字的方式非常相似(在这种情况下,http1已升级为websockets连接)。反向代理会将通过http1发送的grpc请求发送到http2后端,反之亦然。您可以使用Envoy(建议/当前由grpc-web使用),traefik(我个人使用此功能)和nginx。

答案 1 :(得分:0)

我现在了解到,浏览器仅支持HTTP / 2,因为它们使用HTTP / 2代表您的应用程序(javascript)代码从服务器获取资源。

Javascipt应用程序代码仍只能使用HTTP / 1(浏览器可以通过HTTP / 2连接在后台进行处理)。因此,应用程序代码无法使用grpc。

如果任何人都可以找到文档中解释的地方,那么最好在此处添加链接。