在websocket握手上使用会话数据

 werwd2_736 发布于 2023-01-19 10:21

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

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

请求标题

接受: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
连接:keep-alive,升级
DNT:1
主机:192.168.1.2 :9300
原产地:http://localhost
Pragma:no-cache
Sec-WebSocket-Key:5C7zarsxeh1kdcAIdjQezg ==
Sec-WebSocket-Version:13
升级:websocket
用户代理: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

1 个回答
  • http只有cookie和安全的cookie与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
     }
    

    如果你在日志中的某个地方看到了cookie ...你已经知道了.

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

    UPDATE2:

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

    websocket服务器可以使用cookie做"某事"并将它们附加到每个请求中.

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

    我可以肯定地说:如果您使用的是安全cookie,那么除非您使用安全的websocket,否则不会传输cookie wss://mysite.com.平原ws://mysite.com不起作用.

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

    2023-01-19 10:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有