谷歌chrome浏览器-基本认证的websockets



当我使用chrome创建一个新的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头中传递基本认证数据。为什么不把login/pwd作为url查询字符串的一部分?(并使用安全wss)

Authorization头在WebSocket规范中直到Hybi-13才被提及。Chrome实现了hybi-00和hybi-10(取决于Chrome的版本),所以它不是实现的要求。

既然协议中提到了它,也许Google会实现它,但我不能保证放上"user:pass@..."在URI中必须是这样做的,它可能需要更改浏览器的WebSocket API。

Chrome未将授权标头作为升级请求的一部分传递。导致身份验证失败。

这个问题似乎在最新的chromium中得到了修复。

SSL

我在Quora上找到了这个链接。

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

socket . io

也可以使用socket。IO也有websockets传输来做授权

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

最新更新