Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular6 如何在Angular 6拦截器中仅向特定域添加请求头_Angular6_Angular Routing - Fatal编程技术网

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