我如何防止跨域连接,并只允许从我的域访问?
我是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/token
或ws://mysocket.server?token="somerandomtoken"
然后在套接字连接时validation一次该令牌。 如果令牌不能被validation,服务器只是拒绝套接字连接。
简单和安全!
在主文件中将它放在io.on('connection')之前,添加行:
io.set('origins', 'yoursite.com:*'); io.on('connection', function (socket) {