我希望创建一个基本的WebSocket连接从我的Angular 应用程序到服务器。根据RxJs文档,'WebSocket'方法是浏览器提供的WebSocket对象的 Package 器:
import { Injectable } from '@angular/core';
import { webSocket } from 'rxjs/webSocket';
@Injectable({
providedIn: 'root'
})
export class WebSocketService {
connect(url: string) {
return webSocket(url);
}
}
虽然这些示例非常简单,但我发现令人惊讶的是,缺乏关于浏览器需要将数据作为请求头的一部分发送的场景的文档(即:认证令牌)以使服务器满足请求。JavaScript WebSockets是否支持此功能?
我见过一个workaround,其中WebSocket url将令牌作为查询参数添加(见下图),但这是一个应该避免的安全漏洞。任何建议或参考都会有帮助!
1条答案
按热度按时间ldfqzlk81#
没有
底层API不支持任何其他参数(URL和协议除外)。
更多详情请查看this answer
链接的答案中没有解释的一个可能的解决方案是,您可以在先前的请求中从服务器设置cookie。当您打开WebSocket时,该cookie应该重新发送到服务器。要使其工作,请确保在HttpService中启用withCredentials