Angular.js 401 Unauthorized Status Code

时间:2015-06-28 09:32:02

标签: angularjs node.js http-status-code-401

我想获取用于身份验证的访问令牌。我的帖子结果如

POST https://staj-io-goldenilkay92-1.c9.io/api/v1/oauth/token 401(未经授权)

但是当我尝试用邮递员发帖时,它会起作用。

服务器端标题

res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, Authorization');
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.header('Content-Type', 'application/json');

角色代码

服务

function signIn(data) {

    var deferred = $q.defer();


    $http.post('https://staj-io-goldenilkay92-1.c9.io/api/v1/oauth/token', data,
        {headers: {'Content-Type': 'application/x-www-form-urlencoded'}}
    )
        .success(function (response, status, headers, config) {
            deferred.resolve(response);
        }).error(function () {
            deferred.reject("Failed to login");
        });

    return deferred.promise;

}

控制器

  vm.loginData = {

    'client_id': 'client',
    'client_secret': 'client',
    'grant_type': 'password',
    'username': '',
    'password': ''
};


vm.login = function login() {

    loginService.signIn(vm.loginData).then(function (result) {
            vm.signInResult = result;

        },
        function (data) {

        });


}

Postman Result

POST https://staj-io-goldenilkay92-1.c9.io/api/v1/oauth/token 401(未经授权)

2 个答案:

答案 0 :(得分:1)

以下是解决问题的建议;

使用cors模块(不是必需的);

服务器端

我认为您的护照代码正常运作。

var cors= require('cors');

//init first.

app.options(cors({origin'*'}));  //Use your origins.
app.use(cors({origin'*'}));      //Use your origins.

客户端

只需删除标题选项

//...

$http.post('https://staj-io-goldenilkay92-1.c9.io/api/v1/oauth/token', data)
    .success(function (response, status, headers, config) {
        deferred.resolve(response);
    }).error(function () {
        deferred.reject("Failed to login");
    });
//...

答案 1 :(得分:0)

如果一个POST工作而另一个没有,那么你的angularjs $ http请求正在使用错误的参数发出请求。

我建议您使用http分析器(如Fiddler)并比较Postman所做的实际请求与您使用角度应用程序所做的请求。