【问题标题】:Angular 2 http.get is not sending the token in the headerAngular 2 http.get 未在标头中发送令牌
【发布时间】:2016-07-08 17:37:36
【问题描述】:

我有一个 post 方法正在工作并从服务器获取我的令牌

authenticate() {
  let url = this.server + 'authenticate';
  let headers = new Headers({ 'Content-Type': 'application/json' });
  let options = new RequestOptions({ headers: headers });

  let body = JSON.stringify({
    'password': 'admin',
    'rememberMe': true,
    'username': 'admin'
  });
  return this._http.post(url, body, options)
    .map((res: Response) => res.json())
    .subscribe(result => this.token = result.id_token);
}

其中this.server 是一个包含服务器url 的字符串。而this._http 只是 Angular Http 的一个实例

private _http: Http;
constructor(http: Http) {
  this._http = http;
}

this.token 只是一个空字符串private token: string;

现在一切正常,我正在从服务器获取正确的令牌。 我的问题是,当我尝试在 get 方法中使用此令牌时,它不起作用,并且出现 401(未经授权)错误。

我的buggy获取方法是:

getData(src) {
  let url = this.server + src;
  let headers = new Headers({'Authorization': 'Bearer ' + this.token});
  return this._http.get(url, headers)
  .map((res: Response) => res.json())
  .subscribe(res => console.log('res'));
}

【问题讨论】:

    标签: angular angular2-services angular2-http


    【解决方案1】:

    所以问题是我应该在发送邮件时在标题周围添加{}。获取应该是this._http.get(url, { headers })

    【讨论】:

      【解决方案2】:

      Http.get 接受一个 url 字符串和一个可选的 RequestOptionsArgs 作为参数。将标头包装在 RequestOptions 对象中应该可以解决问题。

      getData(src) {
        let url = this.server + src;
        let headers = new Headers({'Authorization': 'Bearer ' + this.token});
        let options = new RequestOptions({ headers: headers });
        return this._http.get(url, options)
          .map((res: Response) => res.json())
          .subscribe(res => console.log('res'));
      }
      

      【讨论】:

      • 其实我就是这样的,和以前没什么区别
      • 在 .map() 调用中添加返回 .map((res:Response => return res.json())
      • 谢谢你,但这不是问题所在。如果你想要,我写了答案
      • 使用 {} 可能有效,但正确的方法是使用 RequestOptions 对象。我已经更新了我的答案以反映这一点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      • 2019-08-10
      • 2018-01-27
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      相关资源
      最近更新 更多