Closed3
gRPC-webはどんなブラウザでも利用できるのか知りたい
gRPCが使えるブラウザに制限があるのか気になるので調べる。
結論
- gRPC-webとgRPC over HTTP2がある
- gRPC-webはすべての機能をつかえるわけではないが、多くのブラウザで利用できる(たぶんIE10でも?)
- gRPC over HTTP2はブラウザで利用できない模様
このドキュメントは "Chatwork Tech Tips" の一環です。
その他の Tips も含めて @Chatwork_dev にて確認することができます 👨🏫
gRPCをWebで利用するために gRPC-webというものがある。
そもそもgRPCに gRPC-webというプロトコルがある
本家のプロトコルになる gRPC over HTTP2というのがある
これを利用するにはHTTP2のフレームレベルの操作が必要っぽい。
しかし、ブラウザではHTTP2を使っていてもHTTP 1.1をつかっているように見えるように実装されている。
つまり、ブラウザのJavaScriptではgRPC over HTTP/2は使うことができない。
そのため gRPC-webという代わりになるプロトコルがあり、機能が一部制限されている状態のようだ。
gRPC-webは普通のHTTP1.1リクエストでcontent-typeをapplication/grpc-webとして通信するだけなので多くのブラウザで動作ができる。
Text形式の通信をサポートしているので、バイナリデータをBase64にエンコードしたりすることでサポートブラウザを拡大することができる。
このスクラップは2021/05/14にクローズされました