angular - Angular:如何拦截服务器发送的事件请求?
问题描述
我编写了一个角度拦截器来为我的请求添加一些标头。在 SSE 请求之前一切都很好,它没有被拦截!
@Injectable()
export class SessionUserDataInterceptor implements HttpInterceptor {
constructor(@Inject(SESSION_USER_DATA) private userData: SessionUserData) {}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const setHeaders = {};
if (this.userData.line) {
setHeaders['Line'] = this.userData.line;
}
if (this.userData.profil) {
setHeaders['Profil'] = this.userData.profil.id;
}
return next.handle(request.clone({setHeaders}));
}
}
SessionUserData
只是SessionStorage
.
我尝试将标头添加到我的 SSE 连接,但它也不起作用。
const es = new EventSource(url, {headers: {Line: 'XXX', Profil: 'YYY'}} as any);
任何帮助表示赞赏。
解决方案
该HttpInterceptor
模式仅适用于由HttpClient
. 这意味着EventSource
没有被捕获,也不是普通的XMLHttpRequest
。你能做的最好的事情是将你的请求在你的拦截器中的实际转换移动到一个实用函数,你可以在你的拦截器中调用它,也许是一个包装EventSource
功能的自定义服务
推荐阅读
- android - 以编程方式将视图添加到 LinearLayout 但它们不会出现
- azure-devops - 按 Azure DevOps 上相关错误的数量对测试用例进行排序
- python - 使用 Python PIL 从动画 GIF 中获取像素颜色
- c++ - 使用 Winsock2.h C++ 向 discord api 发送 HTTP 请求的问题
- jenkins - 有没有办法可以将我的机器人测试结果从 Jenkins 报告给 slack?
- laravel - 如何获得 Laravel 数据库的总和值?
- ajax - 本地主机拒绝连接 - ERR_CONNECTION_REFUSED
- python - Plotly:如何使用 plotly.express 饼图向 hover_data 添加元素?
- smlnj - number_in_month 练习(尝试构建列表的 SML 函数中的 Tycon 不匹配错误)
- sharepoint - 错误:找不到“恢复”的重载和参数计数:“1”