angular - 如何拦截 SockJS 发送的握手请求
问题描述
我正在尝试在 Angular 客户端和 Spring Boot 服务器之间创建套接字连接。
const ws = new SockJS(this.addressStorage.apiAddress + '/socket', null, {
sessionId: function (): string {
return that.authManager.playerId + ':' + lobbyName + ':' + uuid();
}
});
由于我在服务器上启用了 WebSecurity,我需要授权每个请求,包括 sockjs 握手。所以在创建 SockJS 时,会弹出这个窗口:
当客户端与服务器创建套接字连接时,我不希望用户再次写入他的登录名和密码。不幸的是,使用 SockJS 添加授权标头是不可能的,所以我决定使用拦截器。
这个拦截器不捕获 SockJS 握手:
export class SocketInterceptorService implements HttpInterceptor {
constructor(private authManager: AuthManagerService) {
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log(req.url);
console.log(req);
// req = req.clone({
// setHeaders: {
// Authorization: this.authManager.basicToken
// }
// });
return next.handle(req);
}
}
那么如何拦截 SockJS 握手以自动授权 SockJS 连接?
解决方案
推荐阅读
- php - Laravel 默认注销功能代码在哪里
- angular - 如何使用 Angular 9 收听 Quarkus Websocket?
- macos - 我们如何在 DEXT 中获取终止事件 - Catalina DEXT 驱动程序中的问题
- spring-boot - 如何在 Spring Cloud 中处理 com.netflix.client.ClientException
- python - 在打印语句中将字符串作为参数传递
- mongodb - 在 MONGO 返回中删除 _id
- r - 在一个函数中设置几个条件
- sql - 将表中的值添加到另一个与文本框中的值相结合
- javascript - 如何在代码中使用preventdefault of jquery来防止key重复?
- java - RestTemplate 访问响应中的元素