将从另一个应用程序访问我的Angular应用程序,并以如下方式配置用于部署我们的应用程序的环境,即来自该应用程序的访问我的Angular应用程序的请求将包含一些在Request中设置的信息标头。我被要求使用标题信息来标识从中调用Angular应用程序的应用程序。另一个应用程序可以是外部部署的应用程序,也可以是内部部署的应用程序。该信息将在请求标头中提供。
我无法找到有关如何在Angular中获取/读取我的应用程序访问请求的标头信息的任何方法。有人请帮助我。
答案 0 :(得分:0)
因为没有方法可以执行此操作。 您的应用程序正在浏览器中运行,因此您的应用程序没有收到任何请求,但浏览器却有。您可能应该找到其他架构。让您的后端参与流程。也许构造一个将重定向到您的应用程序的端点。
所以我知道从标头中检索任何内容的唯一方法是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;
}
}
最诚挚的问候!