Open
Description
Describe the bug
I am using socket.io in nuxt. Even though I didn't enable cors, it is possible to connect from a different origin than the one nuxt is running on. E.g. it runs on localhost:3000 and I can connect from localhost:8000. Is this a bug or is it my fault?
To Reproduce
Please fill the following code example:
Socket.IO server version: ^4.7.5
Server
import type { NitroApp } from "nitropack";
import { Server as Engine } from "engine.io";
import { Server } from "socket.io";
import { defineEventHandler } from "h3";
import { registerSocketHandlers } from "../sockets";
export default defineNitroPlugin((nitroApp: NitroApp) => {
const engine = new Engine();
const io = new Server();
io.bind(engine);
registerSocketHandlers(io);
nitroApp.router.use("/socket.io/", defineEventHandler({
handler(event) {
engine.handleRequest(event.node.req, event.node.res);
event._handled = true;
},
websocket: {
open(peer) {
const nodeContext = peer.ctx.node;
const req = nodeContext.req;
// @ts-expect-error private method
engine.prepare(req);
const rawSocket = nodeContext.req.socket;
const websocket = nodeContext.ws;
// @ts-expect-error private method
engine.onWebSocket(req, rawSocket, websocket);
}
}
}));
});
Socket.IO client version: ^4.7.5
Client
socket: io('http://localhost:3000', { transports: ['websocket', 'polling', 'flashsocket'] }),
Expected behavior
It will not be possible to connect from an origin other than the one defined or on which nuxt is running.
Platform:
- Device: PC
- OS: Windows 10
Additional context
Add any other context about the problem here.