访问我的Angular应用程序时如何获取请求标头值

时间:2018-08-23 11:36:22

标签: angular http-headers

将从另一个应用程序访问我的Angular应用程序,并以如下方式配置用于部署我们的应用程序的环境,即来自该应用程序的访问我的Angular应用程序的请求将包含一些在Request中设置的信息标头。我被要求使用标题信息来标识从中调用Angular应用程序的应用程序。另一个应用程序可以是外部部署的应用程序,也可以是内部部署的应用程序。该信息将在请求标头中提供。

我无法找到有关如何在Angular中获取/读取我的应用程序访问请求的标头信息的任何方法。有人请帮助我。

1 个答案:

答案 0 :(得分:0)

因为没有方法可以执行此操作。 您的应用程序正在浏览器中运行,因此您的应用程序没有收到任何请求,但浏览器却有。您可能应该找到其他架构。让您的后端参与流程。也许构造一个将重定向到您的应用程序的端点。

Another same question

所以我知道从标头中检索任何内容的唯一方法是httpInterceptor,它拦截任何传出的请求并观察响应,如下所示:

import { Injectable } from '@angular/core';
import { HttpInterceptor, 
         HttpEvent, 
         HttpHandler, 
         HttpRequest, 
         HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class HeaderInterceptor implements HttpInterceptor {

   constructor(private userService: UserService, 
               private constantsService: ConstantsService){ }

public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    if(req.url.includes(/*whatever you are looking for*/)) { 

    }

    return next.handle(req).do((suc) => {
        if(suc.type !== 0){
            const whateverDataYouNeed = suc['headers'].get(/*whatever header you need*/);
            // Do something with it           
        }

    }).
    catch((error, caught) => {
        return Observable.throw(error);
    }) as any;
  }
}

最诚挚的问候!