【问题标题】:Angular.js 401 Unauthorized Status CodeAngular.js 401 未经授权的状态码
【发布时间】:2015-09-14 21:07:51
【问题描述】:

我想获取访问令牌以进行身份​​验证。我的帖子结果像

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) {

        });


}

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

【问题讨论】:

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


    【解决方案1】:

    以下是解决您问题的建议;

    使用cors 模块(非必需);

    服务器端

    我假设您的 passport 代码工作正常。

    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");
        });
    //...
    

    【讨论】:

      【解决方案2】:

      如果一个 POST 有效而另一个无效,那么您的 angularjs $http 请求使用错误的参数发出请求。

      我建议你获取一个 http 分析器(如 Fiddler),并将 Postman 完成的实际请求与你的 Angular 应用程序完成的请求进行比较。

      【讨论】:

        猜你喜欢
        • 2020-08-12
        • 1970-01-01
        • 2020-02-26
        • 1970-01-01
        • 2021-03-19
        • 1970-01-01
        • 2013-01-01
        • 2011-04-18
        • 1970-01-01
        相关资源
        最近更新 更多