当我使用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?
答案 0 :(得分:6)
似乎chrome确实没有在ws头文件中传递基本的auth数据。 为什么不将login / pwd作为url查询字符串的一部分? (并使用安全wss)
答案 1 :(得分:6)
Chrome未在升级请求中传递授权标头。这导致身份验证失败。
这个问题似乎已在最新的铬Here
中得到修复答案 2 :(得分:5)
The Authorization
header was not mentioned in the WebSocket spec until Hybi-13。 Chrome实现了hybi-00和hybi-10(取决于Chrome的版本),因此不需要实施。
现在已经在协议中提到了,也许谷歌会实现它,但我不保证在URI中放置“user:pass @ ...”必然是这样做的方式,它可能需要更改到浏览器的WebSocket API。
答案 3 :(得分:3)
我发现了link on Quora。
我同意您可以使用SSL并将这些凭据作为第一条消息发送。
你也可以使用socket.io,它也有websockets传输来做authorizing
答案 4 :(得分:1)
Chrome会发送带有websocket连接的Cookie。如果您有会话cookie,则可以使用会话cookie来标识启动websocket连接的用户。