【问题标题】:How to detect the Remote/Client IP Address of a WebSocket connection on OpenShift如何在 OpenShift 上检测 WebSocket 连接的远程/客户端 IP 地址
【发布时间】:2015-02-24 03:59:12
【问题描述】:

在 OpenShift 云中,通常的 Apache 代理将发送 HTTP 标头 x-client-ipx-forwarded-for,我可以使用它们来确定客户端 IP。

但对于newer proxy, which is the only option for WebSocket users,这些是唯一发送的标头:

  • connection
  • upgrade
  • sec-websocket-version
  • sec-websocket-key
  • origin
  • host

这些标头都不能帮助我检测远程地址,socket.remoteAddress 的 NodeJS 属性没有用,因为它会检测代理 IP。

我可以使用任何解决方案吗?

【问题讨论】:

    标签: http websocket openshift


    【解决方案1】:

    这是我对 node.jssocket.io @ OpenShift 的体验。

    我必须找到解决 socket.handshake.address 的方法,它无法按预期工作,所以这是我记录 client.ip 地址的实现...

    client 连接时,server '询问' client.ip 和一个数据包。 0x00

    0x00数据包到达客户端时:

    socket.on('0x00', function(){
            $.getJSON('http://jsonip.com/?callback=?', function(r){ 
                var myIP = r.ip;
                socket.emit('0x01', myIP);
            }); 
    

    将包含client.ip的0x01数据包发送到服务器

    这将是服务器接收数据包 0x01 的示例:

    socket.on('0x01', function(myIP){
        console.log('[+] Client @',myIP,':',socket.id);
      });
    

    这对我来说是完美的,祝你实施顺利。

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 1970-01-01
      • 2021-09-18
      • 2019-11-02
      • 2016-07-30
      • 1970-01-01
      • 2012-11-29
      • 2021-12-10
      • 1970-01-01
      相关资源
      最近更新 更多