Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Socket.io-如何在服务器端获取客户端URL请求?_Node.js_Sockets_Socket.io - Fatal编程技术网

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

Node.js Socket.io-如何在服务器端获取客户端URL请求?,node.js,sockets,socket.io,Node.js,Sockets,Socket.io,在我的app.js(服务器)中,我需要知道请求来自哪里(URL) 目前,我正在将URL作为参数从客户端传递: socket.emit('request', window.location.href); 并在服务器端进行处理 socket.on('request', function(url){ console.log(url); ... }); 但这显然是有风险和不安全的(客户端可以向服务器发送任何东西) 所以我猜。。是否可以仅在服务器端获取URL参数?可能是从套接字对象?获

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

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

socket.emit('request', window.location.href);
并在服务器端进行处理

socket.on('request', function(url){
    console.log(url);
    ...
});
但这显然是有风险和不安全的(客户端可以向服务器发送任何东西)


所以我猜。。是否可以仅在服务器端获取URL参数?可能是从套接字对象?

获取连接URL

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

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

});

这将返回如下内容:
url:/socket.io/1/?t=1407807394827

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

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

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

对于跨域连接,它会返回类似于www.example.com/socket.io/1/?t=1407807394827的内容吗?