是否可以将请求头添加到RxJs WebSocket?

lnxxn5zx  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(164)

我希望创建一个基本的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将令牌作为查询参数添加(见下图),但这是一个应该避免的安全漏洞。任何建议或参考都会有帮助!

ldfqzlk8

ldfqzlk81#

没有
底层API不支持任何其他参数(URL和协议除外)。
更多详情请查看this answer
链接的答案中没有解释的一个可能的解决方案是,您可以在先前的请求中从服务器设置cookie。当您打开WebSocket时,该cookie应该重新发送到服务器。要使其工作,请确保在HttpService中启用withCredentials

相关问题