当前位置: 首页 > 知识库问答 >
问题:

为什么浏览器不支持gRPC?

慕志泽
2023-03-14

gRPC基于HTTP/2,浏览器广泛支持HTTP/2(假设)。因此,我觉得从浏览器使用gRPC应该没有问题。

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

我忽略了实际的问题——为什么gRPC不只是在浏览器上工作?

共有2个答案

巫马修然
2023-03-14

大多数浏览器使用HTTP1.1,而GRPC只使用HTTP2。您可以使用nginx、en特使或traefic在反向代理后运行它,这与反向代理后通常使用web套接字的方式非常相似(在这种情况下,http1升级为websockets连接)。反向代理将通过http1向http2后端发送grpc请求,反之亦然。您可以使用特使(建议/目前由grpc web使用)、traefik(我个人使用)和nginx。

庞意智
2023-03-14

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

JavaSimplt应用程序代码仍然只能使用HTTP/1(可以由浏览器在HTTP/2连接中在后台处理)。因此,应用程序代码不可能使用grpc。

如果有人能在文档中找到这方面的解释,最好在这里添加链接。

 类似资料:
  • 把jade编译为一个可供浏览器使用的单文件,只需要简单的执行: $ make jade.js 如果你已经安装了uglifyjs (npm install uglify-js),你可以执行下面的命令它会生成所有的文件。其实每一个正式版本里都帮你做了这事。 $ make jade.min.js 默认情况下,为了方便调试Jade会把模板组织成带有形如 __.lineno = 3 的行号的形式。 在浏览器

  • Next.js 支持 IE11 和所有的现代浏览器使用了@babel/preset-env。为了支持 IE11,Next.js 需要全局添加Promise的 polyfill。有时你的代码或引入的其他 NPM 包的部分功能现代浏览器不支持,则需要用 polyfills 去实现。 ployflls 实现案例为polyfills。

  • AdminLTE 与 Bootstrap 4 支持的浏览器一样。Bootstrap 支持 主流平台和浏览器,稳定版在 Windows 上,我们支持 Internet Explorer 10-11 / Microsoft Edge。更多详细信息,请点击此处。 你可以在 我们的 .browserslistrc 文件 找到支持的浏览器情况及其版本: # https://github.com/browse

  • 主要内容:HTML5 浏览器支持,将 HTML5 元素定义为块元素,实例,为 HTML 添加新元素,实例,Internet Explorer 浏览器问题,完美的 Shiv 解决方案,实例你可以让一些较早的浏览器(不支持HTML5)支持 HTML5。 HTML5 浏览器支持 现代的浏览器都支持 HTML5。 此外,所有浏览器,包括旧的和最新的,对无法识别的元素会作为内联元素自动处理。 正因为如此,你可以 "教会" 浏览器处理 "未知" 的 HTML 元素。 甚至你可以教会 IE6 (Windows

  • 看看AMP规范,考虑到定制样式元素对CSS变量的依赖,这意味着当前的浏览器支持范围很窄。请看:我可以使用参考资料吗 我猜非自定义样式有一个“优雅的退路”,因为不理解CSS变量的浏览器会忽略那个CSS。 是否有AMP的浏览器兼容性/支持矩阵?

  • Docusaurus 允许网站通过 浏览器列表配置(browserslist configuration) 来定义其要支持的所有浏览器。 目的 网站需要在向后兼容性和文件体积之间做平衡。由于旧的浏览器不支持现代的 API 或语法,因此需要更多代码才能实现相同的功能,这会增加网站的加载时间,从而对所有其他用户造成不利的影响。为权衡起见,Docusaurus 打包工具仅支持浏览器列表中所定义的浏览器版