質問: javascriptのWebSocketの接続時にヘッダー情報を設定する方法を教えて頂けないでしょうか? angularからJWTによるトークン認証を使っているのですが、通常のリクエストはinterceptorを利用してAuthorizationヘッダーにトークンをを設定しているものの、WebSocket接続時にはinterceptorを通らないためヘッダーが設定されません。 別途設定しようと思ったのですが、WebScoketオブジェクトにヘッダーを設定する方法がわかりません。 環境は下記になります。 サーバ * go言語 * Echo framework クライアント * angular * javascipt 以上、よろしくお願いします。
回答: JS の WebSocket API では残念ながらヘッダーを設定することはできません。 回避策として、JSのWebSocket APIでは、サブプロトコル名を設定することができます。 サブプロトコルを設定すると、Sec-WebSocket-Protocolヘッダーが追加されます。 サブプロトコル名は自由に設定することができますので、サブプロトコル名にJWTトークンを設定してみてはいかがでしょう。 当然ながら、受ける側のライブラリ等の改造が必要となりますが。 ``` const ws = new WebSocket('wss://hoge.com', ['JWTトークン']); ```