gpt4 book ai didi

php - 从 PHP Ratchet WebSocket 服务器获取客户端 Cookie

转载 作者:行者123 更新时间:2023-12-04 02:01:50 24 4
gpt4 key购买 nike

我有一个 PHP Ratchet WebSocket 服务器,在我的网站上运行自定义聊天室。

我想在用户连接到服务器时获取他们的 cookie,这样我就可以获取他们的 session 数据并在他们登录/具有特定权限等时做一些特别的事情。

在其他帖子(包括 StackOverflow 和其他帖子)中,据说要获取 session 数据,您必须获取客户端的 cookie,这些 cookie 在他们对 Web 服务器的请求中提供。以下代码行用于执行此操作:

$conn->WebSocket->request->getCookies()

其中 $conn 是一个 ConnectionInterface

我的问题是,运行时它只会返回一个空数组,即使 DevTools 会显示确实存在 cookie。

为什么这可能没有返回值?

最佳答案

以防万一您仍在寻找解决方案:

1.如果您的 cookie 仅对特定域/子域有效 - 您应该通过同一地址建立与 WebSocket 服务器的连接。例如,仅对 admin.example.com 有效的 cookie 不会发送到根域 (example.com) 上的 WebSocket 服务器。

2. 如果您的 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.在 Ratchet 0.4.x 中,不再有 cookie 解析器。您只能将其作为原始字符串获取,然后自行解析。

使用 Ratchet 0.4.x 获取和解析 cookie:

$cookiesRaw = $conn->httpRequest->getHeader('Cookie');

if(count($cookiesRaw)) {
$cookiesArr = \GuzzleHttp\Psr7\parse_header($cookiesRaw)[0]; // Array of cookies
}

关于php - 从 PHP Ratchet WebSocket 服务器获取客户端 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46644182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com