如何在ng2-completer中添加HTTP请求标头

时间:2018-01-18 11:33:17

标签: typescript request-headers

我现在已经挣扎了两天来解决我遇到的这个标题问题。我可以在Postman中调用ng2-completer API,没有任何问题。

我需要在请求标头中传递令牌进行身份验证。它在Postman中运行良好,但是我在TypeScript中尝试过它根本不起作用。

 this.dataService = completerService.remote("https://arsapi.azurewebsites.net/api/searchusers?searchstring=", 'userName', 'userName');
   let options = new RequestOptions({ headers: new Headers() });
   options.headers.set('Content-Type', 'application/json');
   options.headers.set("Authorization", 'Bearer JeBVR3A');
   this.dataService.requestOptions(options);

TypeScript中的上述请求不会发送标头。

为什么我的请求标题不包含在请求中?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

我在我的组件中做了这个并且工作:

constructor(
    private completerService: CompleterService,
    private authenticationService: AuthenticationService
  ) {
    this.dataService = completerService.remote(`${environment.baseUrl}/cep/autocomplete?term=`, 'label', 'label');
    let options = new RequestOptions({headers: new Headers()});
    options.headers.set('Authorization', authenticationService.getToken());
    options.headers.set('Content-Type', 'application/json');
    this.dataService.requestOptions(options);
  }

答案 1 :(得分:0)

我认为发生的事情是您在实际请求后的代码中将标题添加到请求中,这就是您在请求中没有看到它们的原因。

您需要在completerService.remote()函数中添加这些行,因为这是实际HTTP请求的位置。

let options = new RequestOptions({ headers: new Headers() });
options.headers.set('Content-Type', 'application/json');
options.headers.set("Authorization", 'Bearer JeBVR3A');
this.dataService.requestOptions(options);

我不知道你的completerService.remote()函数是什么样的,但无论代码行是做什么样的HTTP GET,你都需要在此之前加上上面的行,然后传递{{1}变量到它。