验证websocket连接的用户会话有哪些常用方法?
据我所知,websocket消息只包含没有标题的数据。因此,授权cookie不可用于服务器后端。应用程序应该如何区分来自不同客户端的消息?
答案 0 :(得分:1)
您使用的是哪个websocket服务器?
如果你的web服务器和websocketserver是相同的,你可以通过websocket发送sessionid并强制断开任何在第一条消息中没有发送有效sessionid的客户端。
如果您的websocketserver正确解析HTTP升级请求中发送的HTTP标头,它还可以保存任何cookie。这就是我的firefox(版本35)的请求:
GET /whiteboard HTTP/1.1
Host: *:*
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Sec-WebSocket-Version: 13
Origin: *
Sec-WebSocket-Protocol: whiteboard
Sec-WebSocket-Key: iGPS0jjbNiGAYrIyC/YCzw==
Cookie: PHPSESSID=9fli75enklqmv1a30hbdmg1461
Connection: keep-alive, Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
如你所见,phpsessionid传播正常。如果它解析HTTP标头,请检查websocketserver的文档。请记住,如果websocket的域名与网络服务器的域名不同,则不会发送cookie。