微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 在Websocket握手上使用会话数据

如果登录用户导航到要使用WebSockets的站点的某个区域,那么我如何抓住该会话ID,以便我可以在服务器上识别他?

我的服务器基本上是一个无休止的循环,它保存所有连接的用户和信息的信息,所以为了抓住这个id,我认为唯一合适的时刻是握手,但不幸的是握手的请求头不包含cookie数据:

Request Headers

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en;q=0.5
Cache-Control: no-cache
Connection: keep-alive,Upgrade
DNT: 1
Host: 192.168.1.2:9300
Origin: http://localhost
Pragma: no-cache
Sec-WebSocket-Key: 5C7zarsxeh1kdcAIdjQezg==
Sec-WebSocket-Version: 13
Upgrade: websocket
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
rv:27.0) Gecko/20100101 Firefox/27.0

那我该怎么才能抓住这个id呢?我以为我可以以某种方式强制javascript发送cookie数据以及该请求,但任何自尊网站在2014年将拥有httpOnly会话cookie,以便不会解决.任何帮助是极大的赞赏!

以下是我使用http://www.4shared.com/rar/7RIos1tuce/PHPWebSocket-Chat-master.html服务器文件的下载链接

http只有Cookie以及安全的cookies可以通过websocket正常工作.

某些Websocket模块已经选择忽略请求中的cookie,因此您需要阅读模块的规范.

尝试:websocket节点:https://github.com/Worlize/WebSocket-Node.

确保使用安全的Websocket协议作为wss://xyz.com

更新:

此外,chrome将不会在“检查元素”网络选项卡中显示Cookie.

在节点尝试转储请求,像:

wsServer.on('request',function(request) {
   console.log(request);
   console.log(request.cookies); // works in websocket node
 }

如果您在日志中的某个地方看到cookies,那么您就可以了.

如果您使用的是安全的Cookie,则需要使用安全的Web套接字:wss://

UPDATE2:

cookie在初始请求中传递. Chrome不会显示(始终),因为有时它会显示省略Cookie信息的临时标头.

由websocket服务器来完成与cookies的“某些”,并将它们附加到每个请求中.

看你的服务器的代码https://github.com/Flynsarmy/PHPWebSocket-Chat/blob/master/class.PHPWebSocket.php我没有看到单词“cookie”在任何地方,所以它没有很好的打包和附加到每个websocket连接.我可能错了,这就是为什么你可能想联系开发人员,看看整个标题是否被附加到每个连接以及如何访问它.

这可以肯定地说:如果你使用安全的cookie,那么除非你使用安全的websocket wss://mysite.com,否则cookies将不被传输.平原ws://mysite.com将无法正常工作.

此外,如果域与网页相同,Cookie将只会在请求中传输.

原文地址:https://www.jb51.cc/php/132084.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐