【问题标题】:Angular 6 - receive HTTP GET request on app initializationAngular 6 - 在应用程序初始化时接收 HTTP GET 请求
【发布时间】:2018-12-28 21:04:05
【问题描述】:

当我的 Angular 应用程序第一次启动时,即在 Web 应用程序的页面返回到客户端浏览器之前,我想从最初请求该应用程序的 HTTP 请求中提取一些信息。

具体来说,我想从 Angular 应用程序内部访问调用 Angular 应用程序的 HTTP 请求的标头。

在 Angular 6 中有没有办法做到这一点?

谢谢

【问题讨论】:

标签: angular http server


【解决方案1】:

你可以创建一个拦截请求的服务,实现HttpInterceptor接口,你可以克隆请求并推送你想要的,然后返回。

@Injectable() 导出类 RequestInterceptor 实现 HttpInterceptor {

constructor(private tokenService: TokenService) {}

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpSentEvent 
    | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {

        if(this.tokenService.hasToken()) {
            const token = this.tokenService.getToken();
            req = req.clone({
                setHeaders: {
                    'x-access-token': token
                }
            });
        }
        return next.handle(req);
}

不要忘记在模块中声明服务:

提供者:[{提供:HTTP_INTERCEPTORS,使用类:RequestInterceptor,多:真}]

【讨论】:

  • 抱歉,Angular 拦截器只拦截 Angular 应用发出的 outgoing 请求。我想拦截到达 Angular 应用所在服务器的请求。
  • @Kingamere Interceptors 可用于请求和响应。在发布问题之前,您应该考虑进行一些研究。
  • @R.Richards 该拦截器服务拦截从 Angular 应用程序到某个远程服务器的请求,以及来自该远程服务器的响应。我正在寻找拦截浏览器对角度应用程序本身发出的请求。像这样的东西:angular.io/guide/universal#filtering-request-urls
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
相关资源
最近更新 更多