2回更新
短い答え:いいえ、指定できるのはパスとプロトコルのフィールドのみです。
より長い答え:
JavaScript WebSockets APIには、クライアント/ブラウザーが送信する追加のヘッダーを指定するメソッドはありません。HTTPパス( "GET / xyz")とプロトコルヘッダー( "Sec-WebSocket-Protocol")は、WebSocketコンストラクターで指定できます。
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クライアントをホストしているページがサーバーにチケットをリクエストし、WebSocket接続のセットアップ中にこのチケットをプロトコルフィールドのURL /クエリ文字列で渡すチケットシステムを実装することです。または、接続が確立された後の最初のメッセージとして必要です。その後、サーバーは、チケットが有効である(存在する、まだ使用されていない、チケットのIPでエンコードされたクライアントIP、チケットのタイムスタンプが新しいなど)場合にのみ、接続の継続を許可します。WebSocketセキュリティ情報の概要は次のとおりです。https://devcenter.heroku.com/articles/websocket-security
以前は基本認証がオプションでしたが、これは廃止されており、最新のブラウザーはヘッダーが指定されていても送信しません。
基本認証情報(非推奨):
Authorizationヘッダーは、WebSocket URIのユーザー名とパスワード(またはユーザー名のみ)フィールドから生成されます。
var ws = new WebSocket("ws://username:password@example.com")
上記の結果、文字列 "username:password" base64がエンコードされた次のヘッダーが生成されます。
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Chrome 55とFirefox 50で基本認証をテストし、基本認証情報が実際にサーバーとネゴシエートされていることを確認しました(これはSafariでは機能しない可能性があります)。
基本的な認証の回答をしてくれたDmitry Frankに感謝