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

时间:2014-02-22 16:30:40

标签: node.js socket.io

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

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

我的问题是:我如何阻止跨域连接?或者简单地说,如何在不使用网站的情况下阻止用户连接到网络套接字?

根据:Cross-domain connection in Socket.IO,socket.io中允许跨域连接。

3 个答案:

答案 0 :(得分:2)

您可能会发现origins选项很有用(wiki page):

server.js:

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

您可以找到有关origins格式here的更多信息。

答案 1 :(得分:0)

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

我用来验证Web套接字的一种技术是将令牌发送到客户端并将其附加到套接字服务器的URL中,如下所示

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

然后在套接字连接时验证此标记一次。如果无法验证令牌,则服务器只是拒绝套接字连接。

答案 2 :(得分:0)

简单安全!

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

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

io.on('connection', function (socket) {