国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于cdn 轉(zhuǎn)發(fā)之后獲取客戶端真實ip 問題

tufei

我是群里的jocke

通過CDN(nginx) 轉(zhuǎn)發(fā)到workerman chat 獲取的ip 都是 CDN 的ip,想獲取真是的用戶ip ,想改造的話,該從哪個地方入手,嘗試著修改了 Workerman\Protocols\Websocket.php 增加了 parseHttpHeader 方法里面對 $buffer的解析,但在events中卻提示未定義;

奧總給的回答是
js獲取到了,然后websocket自己發(fā)給wm

方法不錯,不過,這樣的話,IP,就可以偽造了

=================以下是Websocket.php接到的header的$buffer================

GET / HTTP/1.1
Host: ws.xxxx.com
X-Real-IP: 116.235.214.218
X-Forwarded-For: 116.235.214.218
Connection: close
Pragma: no-cache
Cache-Control: no-cache
Origin: http@//192.168.0.196
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Sec-WebSocket-Key: wY4G04lTDKqW8nQkOV50dA==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

注:Origin: http@//192.168.0.196 @換成: 我的權(quán)限不讓發(fā)站外鏈接

==========================events內(nèi)獲取到的$_SERVER============================

array(5) {
  =>
  string(10) "59.56.79.2"
  =>
  int(8293)
  =>
  string(9) "127.0.0.1"
  =>
  int(80)
  =>
  string(20) "7f00000108fd00000001"
}

因為cdn 層是服務商那邊提供,沒辦法再做其他調(diào)整,所以想從wm 中入手,events內(nèi)想獲取到連接帶過來的真實ip

8915 5 0
5個回答

walkor 打賞

先到官網(wǎng)重新下載一份代碼,新版本支持了 onWebSocketConnect時設(shè)置session的特性。
然后在start_gateway.php中增加以下代碼

$gateway->onConnect = function($connection)
{
    $connection->onWebSocketConnect = function($connection , $http_header)
    {
        $_SESSION = $_SERVER;
    };
};

然后就可以在Events.php中直接通過$_SESSION得到客戶端實際ip了

  • 暫無評論
tufei

哪個版本開始支持的?我昨天git 下載的。3.3.4版本

  • 暫無評論
walkor 打賞

一個小時前給你加的特性

  • 暫無評論
tufei

萬分感謝!

  • 暫無評論
walkor 打賞

不客氣

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??