Posted on

Socket.io自行增加header

伺服器端

範例程式碼:

import express from "express";
import http from "http";

const app = express();
const server = http.createServer(app);

const sio = require("socket.io")(server, {
    handlePreflightRequest: (req, res) => {
        const headers = {
            "Access-Control-Allow-Headers": "Content-Type, Authorization",
            "Access-Control-Allow-Origin": req.headers.origin, //or the specific origin you want to give access to,
            "Access-Control-Allow-Credentials": true
        };
        res.writeHead(200, headers);
        res.end();
    }
});

sio.on("connection", () => {
    console.log("Connected!");
});

server.listen(3000);


var io = require('socket.io')(server, { origins: '*:*'});

或者

io.set('origins', '*:*');

socket io client

設定extraHeaders,如下:

const socket = require('socket.io-client')(host,{
  forceNode:true,
  transports: ['websocket'],
  extraHeaders: {
      Origin: Origindata
  },
  transportOptions: {
    polling: {
      extraHeaders: {
        Origin: Origindata
      }
    }
  }
});