从angular $ http标头中删除引号

时间:2015-12-04 20:53:22

标签: javascript angularjs

我正在尝试与某些与某种令牌系统一起使用的REST API进行通信。它应该工作的方式是当我使用user / pass POST到/ api / login时,我得到一个令牌。然后在后续请求中我应该添加带有令牌的X-Auth-Token标头,然后在响应中我将获得更新的令牌。所以我想我可以使用拦截器,如下所示:

app.config(['$httpProvider','AppConfig', function($httpProvider,AppConfig) {
  $httpProvider.interceptors.push(['$q', '$injector', function($q, $injector) {
    return {
      'request': function(config) {
        // add token header only if request is not initial token request
        if (!config.url===AppConfig.serverUrl+'/api/login') {
          config.headers['X-Auth-Token'] = $injector.get('$window').localStorage.getItem('token');
          console.log(config);
        }
        return config;
      }
    }
  }]);
}]);

当我运行代码时,我正确地从API获取令牌,它被保存到localStorage然后,由于console.log,我看到在后续请求中拦截器添加了X-Token-Auth标题为其配置。

但是,我猜当实际请求由Angular组成时,它会抱怨:

Failed to execute 'setRequestHeader' on 'XMLHttpRequest' : "<token>" is not a valid HTTP header field value.

标题如下所示:

Accept: "application/json, text/plain, */*"
X-Auth-Token: "Sl6J/xTGXteGwDK/BYt5/FWrrkvSHsz1wFbHlfHNsO7vo1keZad35tHjHansMTwm"

当我在Chrome邮递员扩展程序中尝试类似内容时,我看到的唯一真正区别是,邮递员发送带有引号的令牌,而Angular会在令牌周围发送引号。

我想最好是服务器能够解决这个问题,但由于我无法控制它,有没有办法删除这些引号?

谢谢!

0 个答案:

没有答案