如何仅在Angular 6拦截器中将请求标头添加到特定域

时间:2018-09-07 12:13:34

标签: angular6 angular-routing

我正在使用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时才添加标头,否则在请求中不添加标头。

1 个答案:

答案 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: {}}); 
}