ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で WebSocket クライアント接続に認証などのカスタム HTTP ヘッダーを追加するにはどうすればよいですか?
WebSocket クライアント API の HTTP ヘッダー
この機能をサポートする HTTP ヘッダー クライアントを使用して、HTTP ヘッダーをカスタマイズします。 WebSocket クライアントですが、ネットワーク プラットフォームの WebSocket API を使用してこれを行う方法が見つかりません。
実装方法を知っている人はいますか?
var ws = new WebSocket("ws://example.com/service");
具体的には、HTTP Authorization ヘッダーを送信できる必要があります。
更新
JavaScript WebSocket API には、クライアント/ブラウザーが送信する追加ヘッダーを指定するメソッドはありません。 WebSocket コンストラクターでは、HTTP パス (「GET /xyz」) とプロトコル ヘッダー (「Sec-WebSocket-Protocol」) を指定できます。
Sec-WebSocket-Protocol ヘッダー (WebSocket 固有の認証で使用するために拡張される場合もあります) は WebSocket から派生しますコンストラクターへのオプションの 2 番目の引数は次を生成します:
var ws = new WebSocket("ws://example.com/path", "protocol"); var ws = new WebSocket("ws://example.com/path", ["protocol1", "protocol2"]);
上記のコードの結果、次のヘッダーが生成されます:
Sec-WebSocket-Protocol: protocol
および
Sec-WebSocket-Protocol: protocol1, protocol2
は WebSocket を実装します。認証/認可のパターンは、WebSocket クライアントをホストするページがサーバーからのチケットを要求するチケット システムを実装することです。このチケットは、接続セットアップ中に、URL/クエリ文字列、プロトコル フィールド、または接続確立後の最初のメッセージとして指定することによって渡されます。その後、サーバーは、チケットが有効な場合 (存在する、使用されていない、チケット内でエンコードされたクライアント IP が一致する、チケット内のタイムスタンプが新しいなど) にのみ接続の継続を許可します。 WebSocket のセキュリティ情報の概要は次のとおりです: https://devcenter.heroku.com/articles/websocket-security。
Basic 認証は以前はオプションでしたが、これは非推奨になり、最新のブラウザではこのヘッダーが指定されていても送信されません。
基本認証情報 (非推奨 - 機能しなくなりました):
Authorization ヘッダーは、WebSocket URI からのユーザー名とパスワード (または単にユーザー名) フィールドです 生成:
var ws = new WebSocket("ws://username:password@")
上記のコードはbase64で生成されています次のヘッダーを文字列「username:password」としてエンコードします:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
基本認証は Chrome 55 および Firefox 50 でテストされ、基本認証情報が実際にサーバーとネゴシエートされることが確認されました (これは機能しない可能性があります)サファリでは)。
基本認証の回答については、Dmitry Frank に感謝します。
以上がJavaScript で WebSocket クライアント接続に認証などのカスタム HTTP ヘッダーを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。