websocket的基本authentication

当我使用chrome创build一个新的websocket

new WebSocket('ws://gert:passwd@127.0.0.1:8001/dbname') 

nodejs服务器接收

 GET /dbname HTTP/1.1 Upgrade: WebSocket Connection: Upgrade Host: 127.0.0.1:8001 Origin: http://127.0.0.1:8000 Sec-WebSocket-Key1: ' 5 5) 4 1e a9 9 0 19 Sec-WebSocket-Key2: 3000909100 Q 

我如何检索gert和passwd?

好像chrome不会传递ws头文件中的基本身份validation数据。 为什么不把login / pwd作为url查询string的一部分? (并使用安全的WSS)

在Hybi-13之前,WebSocket规范中没有提到Authorization头文件 。 Chrome实现了hybi-00和hybi-10(取决于Chrome的版本),所以它不是实现的要求。

现在在协议中提到了,也许Google会实现它,但是我不能保证在URI中放入“user:pass @ …”就一定是这样做的,它可能需要改变浏览器的WebSocket API。

Chrome没有通过授权标头作为升级请求的一部分。 这导致身份validation失败。

这个问题似乎在最新的铬在这里固定

SSL

我在Quora上find了这个链接 。

我同意你可以使用SSL,只是发送这些凭据作为第一条消息。

Socket.io

你也可以使用socket.io,它也有websockets传输来进行授权

Chrome浏览器不会发送带有websocket连接的cookie。 如果你有一个会话cookie,你可以使用会话cookie来识别发起websocket连接的用户。