Angular 2中为ng2-completer添加请求头的问题求助
解决ng2-completer中添加请求头的问题
你现在遇到了两个核心问题:请求头未正确携带,以及TypeScript的参数错误,我们一步步来搞定:
1. 先修正Authorization头的格式错误
你的授权头里Bearer和token之间漏掉了一个空格,这会导致API无法正确识别token——哪怕请求头发送出去,也会验证失败。正确的格式应该是:
'Authorization': 'Bearer 0l4B9VpOnJMBzxMee8SQdU8pFW_L8wBAyQ'
2. 正确设置请求头并解决TypeScript报错
ng2-completer的RemoteData类提供了两种可靠的方式设置请求头:直接用headers()方法,或者通过requestOptions()传递完整请求配置。结合你的报错信息,下面是修正后的完整代码:
import { Headers, RequestOptions } from '@angular/http'; // 务必导入必要模块 constructor( private completerService: CompleterService, private translationService: AppTranslationService, private alertService: AlertService, private useronboardService: UserOnboard ) { // 创建Headers对象,包含API要求的所有请求头 const headers = new Headers({ 'Accept': 'application/json', 'Authorization': 'Bearer 0l4B9VpOnJMBzxMee8SQdU8pFW_L8wBAyQ' }); // 包装成RequestOptions对象 const options = new RequestOptions({ headers: headers }); const url = "https://arsapi.azurewebsites.net/api/searchusers?searchstring="; this.dataService = completerService.remote(url, 'userName', 'userName'); // 设置请求配置(注意方法名是驼峰式的requestOptions,别写成小写的requestoptions) this.dataService.requestOptions(options); }
如果上面的requestOptions调用仍然报错,你可以换用更直接的headers()方法单独设置请求头,这在多数ng2-completer版本里更稳定:
// 替换掉this.dataService.requestOptions(options); 这一行 this.dataService.headers(headers);
额外要注意的细节
- 确认你导入的
Headers和RequestOptions来自@angular/http(Angular 2用这个包,不是@angular/common/http) - 检查API URL是否正确:你代码里写的是
arsapi.azurewebsites.net,但curl示例里是apsapi.azurewebsites.net,这可能是笔误,要和实际API地址保持一致
内容的提问来源于stack exchange,提问作者Niranjan
相关产品推荐
相关产品推荐

