我正在使用Angular 6
。
我的应用程序需要调用多个域url,其中一个是主服务器url,需要添加Authorization标头,而其他则不需要添加标头。
我创建了一个Interceptor类来处理向请求中添加Authorization标头。
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);
}
}
但这是向所有网址添加标头。
如何仅将标头添加到特定的网址,如
https://server.mydomain.com
仅当域os mydomain.com
时才添加标头,否则在请求中不添加标头。
答案 0 :(得分:1)
您可以使用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: {}});
}