当我创建一个WebSocket时,会将一个HTTP请求发送到指定的URL,其中包含一个升级请求。与此升级请求一起传递身份验证信息是典型的,还是应该单独执行?
var websocket = new WebSocket("ws://domain:port/foo"); // Can I include authentication headers with the initial upgrade HTTP request?
发布于 2015-03-11 10:20:53
您应该通过web进行身份验证,返回cookie,然后再连接到websocket服务器,并携带cookie。WS服务器可以验证cookie。
如果没有基于cookie的身份验证,或者只是不可能(就像另一个域中的WS服务器),您将不得不创建自己的请求响应消息来登录。
发布于 2015-03-10 15:07:41
WebSocket RFC标准没有定义任何特定于协议的客户端身份验证机制,但提到了HTTP身份验证是一种可能的选择:
10.5.WebSocket客户端认证 此协议没有规定服务器可以在WebSocket握手期间对客户进行身份验证的任何特定方式。The WebSocket 服务器可以使用任何可用于 通用HTTP服务器,如cookies、HTTP身份验证或TLS 身份验证。
http的标准规定了一个表单,其中包括URL中的登录凭据。表格是http://username:password@www.example.com/file
。但是,这个语法并不是所有浏览器都支持的,因为坦率地说,这是一个非常糟糕的想法。
WebSocket API不公开任何用于HTTP身份验证的特性。这意味着web浏览器应该以它们通常的方式提供身份验证:当浏览器决定支持它时,使用上面的URL语法,或者通过向用户显示一个弹出窗口来输入登录凭据。
https://stackoverflow.com/questions/28965210
复制相似问题