2015-11-03 92 views
4

Ionic App不发送授权标头。即使授权标头列在允许的标题中,标题值也不存在。 我使用快递的NodeJS和MongoDB作为后端这里是我的CORS头

<code> 
res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 
     'GET,PUT,POST,DELETE,OPTIONS'); 
    res.header('Access-Control-Expose-Headers', 
     'X-Authorization-Token, Authorization'); 
    res.header('Access-Control-Allow-Headers', 
     'Origin, X-Requested-With, Content-Type, Accept, Authorization' 
    ); 

    And Here Is My AuthInterceptor 


    return { 
     request: function(config) { 
     var token = authToken.getToken(); 

     if (token) { 
      config.headers.Authorization = 'Bearer ' + token; 

     } 
     return config; 
     }, 
     response: function(response) { 
     return response; 
     } 
    }; 

My $http 

     return $http(options).success(function(response) { 
      self.currUser = response.profile; 
      if (_.contains(response.profile.roles, 'admin') || 
      !((_.contains(response.profile.roles, 'lecturer')) || (_.contains(
       response.profile.roles, 'evaluator')))) { 
      $state.go('admin'); 
      } 
     }) 
</code> 
+0

如果不显示用于设置标题的代码 – charlietfl

+0

是'authToken.getToken()'同步?它是否会返回有效的令牌?如果它是异步的,你有一个问题 – charlietfl

+0

没有它来自本地存储 – faridah1396

回答

0

我有同样的问题。我想通过加入:

"proxies": [ 
{ 
    "path": "/<your local url>", 
    "proxyUrl": "http://<remote_url>" 
} 
], 

我的ionic.project文件。

1

你可以做$ HTTP调用前通过身份验证头。我已经以这种方式使用,这为我工作API权威性,

$http.defaults.headers.get = { 'x-username' User.email, 
          'x-token':authToken.getToken(), 
          'Content-Type':'application/json'}; 

$http.get(URL+'/api).then(function(res){console.log('success')}); 

希望这是对你有帮助。