Socket.io - 如何在服务器端获取客户端URL请求?

时间:2014-08-11 09:13:45

标签: node.js sockets socket.io

在我的app.js(服务器)中,我需要知道请求来自哪里(URL)。

目前,我已将URL作为参数从客户端传递:

socket.emit('request', window.location.href);

并处理服务器端

socket.on('request', function(url){
    console.log(url);
    ...
});

但这显然存在风险和不安全(客户可以向服务器发送任何内容)。

所以我猜...是否有可能只在服务器端获取URL参数?也许来自socket对象?

3 个答案:

答案 0 :(得分:0)

获取连接网址

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

    console.log("url: " + socket.handshake.url);

});

这将返回类似:url: /socket.io/1/?t=1407807394827

的内容

答案 1 :(得分:0)

对于整个URL,您可以使用socket.handshake.headers.referer

io.on('connect', (socket) => {
     console.log(socket.handshake.headers.referer);
});

答案 2 :(得分:0)

socket.request.headers.origin 这将返回域连接