从 PHP Ratchet WebSocket 服务器获取客户端 Cookie
Getting the clients Cookies from a PHP Ratchet WebSocket Server
我有一个 PHP Ratchet WebSocket 服务器,运行在我的网站上设置了一个自定义聊天室。
我想在用户连接到服务器时获取他们的 cookie,这样我就可以获取他们的会话数据并在他们已登录/具有特定权限等情况下执行一些特殊操作
在其他帖子(包括 Whosebug 和其他帖子)中,据说要获取会话数据,您必须获取客户端的 cookie,这些 cookie 在他们对 Web 服务器的请求中提供。以下代码行用于执行此操作:
$conn->WebSocket->request->getCookies()
其中 $conn
是 ConnectionInterface
。
我的问题是,当 运行 这只是一个空数组时 returns,即使 DevTools 会显示确实有 cookie。
为什么这可能没有返回值?
以防万一您仍在寻找解决方案:
1.In 如果您的 cookie 仅对特定 domain/subdomain 有效 - 您应该通过同一地址建立与 WebSocket 服务器的连接。
例如,仅对 admin.example.com 有效的 cookie 不会发送到根域 (example.com) 上的 WebSocket 服务器。
2.In 如果您的 cookie 仅对安全连接 (https://) 有效,您的 WebSocket 服务器也应该通过安全连接 (wss://),这很容易实现最新的 Ratchet 版本。
$webSock = new React\Socket\Server('0.0.0.0:8443', $loop);
$webSock = new React\Socket\SecureServer($webSock, $loop, [
'local_cert' => 'path_to_server_cert',
'local_pk' => 'path_to_private_key',
//'allow_self_signed' => TRUE,
'verify_peer' => FALSE
]);
3.With 棘轮 0.4.x,不再有 cookie 解析器。
只能以原始字符串的形式获取,然后自己解析。
使用 Ratchet 0 获取和解析 cookie。4.x :
$cookiesRaw = $conn->httpRequest->getHeader('Cookie');
if(count($cookiesRaw)) {
$cookiesArr = \GuzzleHttp\Psr7\parse_header($cookiesRaw)[0]; // Array of cookies
}
我有一个 PHP Ratchet WebSocket 服务器,运行在我的网站上设置了一个自定义聊天室。
我想在用户连接到服务器时获取他们的 cookie,这样我就可以获取他们的会话数据并在他们已登录/具有特定权限等情况下执行一些特殊操作
在其他帖子(包括 Whosebug 和其他帖子)中,据说要获取会话数据,您必须获取客户端的 cookie,这些 cookie 在他们对 Web 服务器的请求中提供。以下代码行用于执行此操作:
$conn->WebSocket->request->getCookies()
其中 $conn
是 ConnectionInterface
。
我的问题是,当 运行 这只是一个空数组时 returns,即使 DevTools 会显示确实有 cookie。
为什么这可能没有返回值?
以防万一您仍在寻找解决方案:
1.In 如果您的 cookie 仅对特定 domain/subdomain 有效 - 您应该通过同一地址建立与 WebSocket 服务器的连接。 例如,仅对 admin.example.com 有效的 cookie 不会发送到根域 (example.com) 上的 WebSocket 服务器。
2.In 如果您的 cookie 仅对安全连接 (https://) 有效,您的 WebSocket 服务器也应该通过安全连接 (wss://),这很容易实现最新的 Ratchet 版本。
$webSock = new React\Socket\Server('0.0.0.0:8443', $loop);
$webSock = new React\Socket\SecureServer($webSock, $loop, [
'local_cert' => 'path_to_server_cert',
'local_pk' => 'path_to_private_key',
//'allow_self_signed' => TRUE,
'verify_peer' => FALSE
]);
3.With 棘轮 0.4.x,不再有 cookie 解析器。 只能以原始字符串的形式获取,然后自己解析。
使用 Ratchet 0 获取和解析 cookie。4.x :
$cookiesRaw = $conn->httpRequest->getHeader('Cookie');
if(count($cookiesRaw)) {
$cookiesArr = \GuzzleHttp\Psr7\parse_header($cookiesRaw)[0]; // Array of cookies
}