为 WebSocket 连接配置身份验证标头
Configuring authentication headers for WebSocket connection
IIUC,当我创建一个WebSocket时,一个HTTP请求被发送到指定的URL,其中包含一个升级请求。通常是将身份验证信息与此升级请求一起传递,还是应单独执行?
var websocket = new WebSocket("ws://domain:port/foo"); // Can I include authentication headers with the initial upgrade HTTP request?
WebSocket RFC 标准没有定义任何特定于协议的客户端身份验证机制,但提到 HTTP 身份验证是一个可能的选项:
10.5. 网络套接字客户端身份验证
此协议没有规定服务器可以在 WebSocket 握手期间对客户端进行身份验证。 WebSocket
服务器可以使用可用于 A
的任何客户端身份验证机制通用 HTTP 服务器,例如 Cookie、HTTP 身份验证或 TLS
认证。
http URL 的标准规定了一个表单,其中包含 URL 中的登录凭据。表格是http://username:password@www.example.com/file
.但是并非所有浏览器都支持这种语法,因为坦率地说,这是一个非常糟糕的主意。
WebSocket API 不会公开任何用于 HTTP 客户端身份验证的功能。这意味着Web浏览器应该以通常的方式提供身份验证:当他们决定支持URL语法时,或者向用户显示一个弹出窗口,他们在其中输入登录凭据。
您应该通过 Web 进行身份验证,返回一个 cookie,然后再次连接到 websocket 服务器,携带 cookie。WS 服务器可以验证 cookie
如果没有基于 cookie 的身份验证,或者不可能(如另一个域中的 WS 服务器),则必须创建自己的请求-响应消息以进行登录。
相关文章:
- Sencha Touch和远程服务器上的身份验证
- Javascript清除缓存以清除基本身份验证凭据
- REST的面向公众的身份验证机制
- 当需要身份验证时,ui路由器不会重定向
- 使用Facebook登录,但仍然可以获得:“;此标识池不支持未经身份验证的访问“;
- AJAX HTTP基本身份验证解决方案
- 身份验证后获取Facebook图片
- 如何对单个页面进行密码保护(这不是身份验证系统的一部分)
- Twitter应用程序专用身份验证
- Passport.js成功的身份验证根本没有调用
- 通过JavaScript访问需要身份验证的页面
- UIWebview赢得't通过基本身份验证加载动态加载的资源(通过jQuery mobile)
- 使用JavaScript捕获基本身份验证凭据
- javascript中的Spotify身份验证
- ServiceStack JavaScript服务器事件客户端的身份验证
- Twitter API 1.1无法对您2进行身份验证
- 为 WebSocket 连接配置身份验证标头
- 余烬简单身份验证在会话中保存用户配置文件
- 使用ember-cli简单身份验证令牌配置ember简单身份验证
- 在节点中配置Twitter Passport以允许经过身份验证的用户发布tweet