socket.ioのCORS

WebRTCのアプリを作るためにnodejsのsocket.ioで処理するサーバーを分散させるためにCORSの設定をしたんだけど、httpモジュールのcreateServerでヘッダーを指定しただけではCORSが上手く動かなかった。

というのも、socket.ioで取り込むhttpサーバーインスタンスで指定したからといって、websocket側のレスポンスヘッダにも同様のものが含まれるというわけではなく、socket.ioのインスタンス生成時に指定する必要があった(当然と言えば当然か)

例えば、あらゆるoriginからのリクエストを許可する(あまりよくない)場合は、

//Webサーバー生成
const http = require('http');
const http_server = http.createServer(
    (req, res) =>{
        res.setHeader("Access-Control-Allow-Origin", "*");
        res.write("Hello");
        res.end();
    }
);

こうやってhttpサーバーを生成した後に、

var io_server = require('socket.io')(http_server, { cors: { origin: '*' } } );

としてsocket.ioサーバーのインスタンスを生成してやる必要がある。


prev: 会社が引っ越し
next: ひとり親状態
created at : 2021-06-24 13:39:19
updated at : 2021-06-24 13:57:22
author : Toshiaki Yokoda