Angular6 如何在Angular 6拦截器中仅向特定域添加请求头
我使用的是Angular6 如何在Angular 6拦截器中仅向特定域添加请求头,angular6,angular-routing,Angular6,Angular Routing,我使用的是Angular 6 我的应用程序需要调用多个域url,其中一个是需要添加授权头的主服务器url,其他的不需要添加头 我创建了一个拦截器类来处理向请求中添加授权头的问题 auth.interceptor.ts import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http'; import {Observable} from 'rxjs'; import {AuthSer
Angular 6
我的应用程序需要调用多个域url,其中一个是需要添加授权头的主服务器url,其他的不需要添加头
我创建了一个拦截器类来处理向请求中添加授权头的问题
auth.interceptor.ts
import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';
import {Observable} from 'rxjs';
import {AuthService} from './auth.service';
import {Injectable} from '@angular/core';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(
public Auth: AuthService
) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log(this.Auth.accessToken());
console.log('inside interceptor');
request = request.clone({
setHeaders: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': `${this.Auth.tokenType()} ${this.Auth.accessToken()}`
}
});
return next.handle(request);
}
}
只有在域os
mydomain.com
时才应添加头,否则在请求中不会添加头。您可以使用location.hostname来检查域,类似这样的
if(location.hostname === 'some.domain.com') {
request = request.clone({
setHeaders: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': `${this.Auth.tokenType()} ${this.Auth.accessToken()}`
}
});
} else {
request = request.clone({setHeaders: {}});
}
location.hostname
提供运行angular应用程序的域的主机名。在我的例子中,它提供localhost,因为应用程序在本地运行。而不是使用location.hostname
。我使用了request.url
,然后使用newurl(“”)
if(location.hostname === 'some.domain.com') {
request = request.clone({
setHeaders: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': `${this.Auth.tokenType()} ${this.Auth.accessToken()}`
}
});
} else {
request = request.clone({setHeaders: {}});
}