我如何防止跨域连接,并只允许从我的域访问?

我是Node.JS的新手,这个问题可能有点儿微不足道。 我在客户端使用这样的东西: –

var sock = io.connect('http://www.mydomain.com:3000'); sock.on('connect', function () { console.log("Connected successfully"); sock.emit("_rK",{}); }); 

我的问题是:我如何防止跨域连接? 或者干脆,我如何阻止用户连接到networking套接字而不使用网站?

据此: Socket.IO中的跨域连接,在socket.io中允许跨域连接。

您可能会发现origins选项有用( 维基页面 ):

server.js:

 io.set('origins', 'www.mydomain.com:3000'); 

你可以在这里find更多有关origins格式的信息 。

您可以在服务器上的套接字连接时检查originating url 。 但这不是很安全,很容易被欺骗。

我用来validationnetworking套接字的技术是发送一个令牌给客户端,并将其附加到套接字服务器的URL,像这样

ws://mysocket.server/tokenws://mysocket.server?token="somerandomtoken"

然后在套接字连接时validation一次该令牌。 如果令牌不能被validation,服务器只是拒绝套接字连接。

简单和安全!

在主文件中将它放在io.on('connection')之前,添加行:

 io.set('origins', 'yoursite.com:*'); io.on('connection', function (socket) {