我现在已经挣扎了两天来解决我遇到的这个标题问题。我可以在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中的上述请求不会发送标头。
为什么我的请求标题不包含在请求中?
任何帮助都将不胜感激。
答案 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}变量到它。