websockets的基本身份验证

Ger*_*ens 11 google-chrome node.js

当我使用chrome创建一个新的websocket时

new WebSocket('ws://gert:passwd@127.0.0.1:8001/dbname')
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我怎样才能检索gert和passwd?

And*_*rov 7

似乎chrome确实没有在ws头文件中传递基本的auth数据.为什么不将login/pwd作为url查询字符串的一部分?(并使用安全wss)


小智 7

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

这个问题似乎在最新的铬这里修复了


Cha*_*had 6

Authorization头不是在WebSocket的规格,直到Hybi-13提及.Chrome实现了hybi-00和hybi-10(取决于Chrome的版本),因此不需要实施.

现在已经在协议中提到了,也许谷歌会实现它,但我不保证在URI中放置"user:pass @ ..."必然是这样做的方式,它可能需要更改浏览器的WebSocket API.