Closed3

gRPC-webはどんなブラウザでも利用できるのか知りたい

HIMURA TomohikoHIMURA Tomohiko

gRPCが使えるブラウザに制限があるのか気になるので調べる。

結論

このドキュメントは "Chatwork Tech Tips" の一環です。
その他の Tips も含めて @Chatwork_dev にて確認することができます 👨‍🏫

HIMURA TomohikoHIMURA Tomohiko

gRPCをWebで利用するために gRPC-webというものがある。
https://github.com/grpc/grpc-web

そもそもgRPCに gRPC-webというプロトコルがある
https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md

本家のプロトコルになる gRPC over HTTP2というのがある
https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md

これを利用するにはHTTP2のフレームレベルの操作が必要っぽい。
しかし、ブラウザではHTTP2を使っていてもHTTP 1.1をつかっているように見えるように実装されている。
つまり、ブラウザのJavaScriptではgRPC over HTTP/2は使うことができない。
そのため gRPC-webという代わりになるプロトコルがあり、機能が一部制限されている状態のようだ。

HIMURA TomohikoHIMURA Tomohiko

gRPC-webは普通のHTTP1.1リクエストでcontent-typeをapplication/grpc-webとして通信するだけなので多くのブラウザで動作ができる。
Text形式の通信をサポートしているので、バイナリデータをBase64にエンコードしたりすることでサポートブラウザを拡大することができる。

このスクラップは2021/05/14にクローズされました