Angular4从Http迁移到HttpClient - 使用凭据

问题描述 投票:2回答:1

我们在角度使用HttpModule。

现在我们转移到HttpClient,因为我们听说最好使用它。

一切正常,但是当我们使用HttpModule时,我们有这段代码让chrome将凭证发送到服务器。

constructor(private http:Http){
  let _build = (<any>this.http)._backend._browseXHR.build;
  (<any>this.http)._backend._browseXHR.build = () => {
       let _xhr = _build();
       _xhr.withCredentials = true;
       return (_xhr);
       };
}

我们不得不在第一次服务中写这个,我们所有的服务都使用凭证。

现在,如果我们使用HttpClient,我们无法“转换”此代码。

我们知道我们可以在每个电话中发送withCredentials:true,但我们想要的东西就像我们拥有的那样,一个地方就足够了所有的电话。

如果使用HttpClient,上面的并行代码是什么?

angular
1个回答
1
投票

所以,最后我们刚刚创建了一个基本服务,所有服务都使用这个服务。

基本服务:

@Injectable()
export class BaseService{
   options:any;

   constractor(private http:HttpClient){
       this.options = new HttpHeaders().set('Content-Type', 'application/json');
   }

   get(url){
      return this.http.get(url,{withCredentials:true})
           .catch(err => err);
   }

   post(url, obj){
      return this.http.post(url, obj, {headers: this.options, withCredentials:true})
           .catch(err => err);
   }
}

在服务中使用基本服务的示例:

@Injectable()
export class CarService{

   constractor(private baseService:BaseService){}

   getCarDetails(carNumber:number){
       let url = `${BASE_URL}/GetCar/${carNumber}`;
       return this.baseService.get(url);
   }

   updateCar(carDetails:Car){
       let url = `${BASE_URL}/UpdateCar`;
       return this.baseService.post(url, carDetails);
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.