Angularjs设置了授权标头

时间:2015-09-06 15:22:25

标签: javascript angularjs express cors

我正在尝试在我的请求中添加授权标头,但它不起作用。

我正在使用它:

var config = {headers: {
  'Authorization': token
  }
};
return $http.get('http://localhost:3000/apis/users/all', config);

我也尝试过这个:

$http.defaults.headers.common['Authorization'] = token;

但是在这两种情况下我都在后端请求中得到了这个标题:

Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:es-ES,es;q=0.8,ca;q=0.6,en;q=0.4,gl;q=0.2
Access-Control-Request-Headers:accept, authorization
Access-Control-Request-Method:GET
Connection:keep-alive
Host:localhost:3000
Origin:http://localhost:8000
Referer:http://localhost:8000/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4)         AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36

我需要这样的东西:

Authorization: token

但我得到了这个:

Access-Control-Request-Headers:accept, authorization

然后,我在任何地方都没有令牌值。

我正在使用expressjs作为后端,我将它用于CORS:

app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
    next();
  });

另外说使用chrome扩展Advance Rest Client进行测试它工作正常。在请求标头中有一个Authorization:valueOfToken ..

非常感谢。

3 个答案:

答案 0 :(得分:17)

授权不可能是明确的。

将天气指定为BasicBearer授权

这样的东西
$http.defaults.headers.common['Authorization'] = 'Basic ' + token;

$http.defaults.headers.common['Authorization'] = 'Bearer ' + token;

答案 1 :(得分:3)

我遇到了同样的问题,事实证明这个问题与服务器端的Apache配置有关。我发现可能对您有用的一件事是我的授权令牌是在预检请求标头而不是主请求中发送的,因此它可能看起来不在请求的标头中当你在开发者工具中看到它时。

我正在设置我的默认设置:

app.config(function($httpProvider) {
    $httpProvider.defaults.common['Authorization'] = token;
    // For angular 1.5, use:  
    // $httpProvider.defaults.headers.common['Authorization'] = token;        
});

答案 2 :(得分:2)

试试这个:

$http({

url : "127.0.0.1/login",
method : 'GET',
headers : {
      Content-Type : 'application/json',    
      Authorization: token
      }
}).success(function(data){
    alert("login Successfully");
}).error(function(error){
    alert("login error");
})