Socket.IO を利用する際に, HTTP ヘッダーに認証トークンや Cookie を設定したいというケースがあります. 従来 HTTP ヘッダーを Socket.IO で設定することは難しいとされていましたが, socket.io-client 1.4 以降では extraHeaders
を用いて設定できるようになっています.
使い方
クライアント側で Socket.IO の接続を行う際にのオプションに extraHeaders
を設定することで, リクエストに追加の HTTP ヘッダーを設定出来ます.
var socket = require('socket.io-client')('http://localhost', { extraHeaders: { Authorization: "Bearer authorization_token_here" } });
サーバー側では socket.request.headers
でリクエストの HTTP ヘッダーを取得できます.
extraHeaders について
extraHeaders
は socket.io-client 1.4 から利用出来るようになったオプションです. extraHeaders
は socket.io-client のバックエンドを担う engine-io.client のバージョン 1.6 で追加されました.
その他
例えば, extraHeaders
で Authorization
ヘッダーを設定することで, 簡単に BASIC 認証に対応させることが出来ます. 簡易の認証として BASIC 認証を利用することは便利です.
この件について Stack Overflow にも回答を書きました.