Angular.js 401 未授权状态码
Angular.js 401 Unauthorized Status Code
我想获取访问令牌以进行身份验证。我的 post 结果像
POST https://staj-io-goldenilkay92-1.c9.io/api/v1/oauth/token 401(未授权)
但是当我尝试 post 与 postman 时它起作用了。
服务器端Headers
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');
Angular代码
服务
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/token 401(未授权)
如果一个 POST 有效而另一个无效,那么您的 angularjs $http 请求使用了错误的参数。
我建议您获得一个 http 分析器(如 Fiddler),然后比较 Postman 完成的实际请求与您 angular 应用程序完成的请求。
这是解决您问题的建议;
使用cors模块(不需要);
服务器端
我假设你的 passport 代码工作正常。
var cors= require('cors');
//init first.
app.options(cors({origin'*'})); //Use your origins.
app.use(cors({origin'*'})); //Use your origins.
客户端
只需删除 headers 个选项
//...
$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");
});
//...
我想获取访问令牌以进行身份验证。我的 post 结果像
POST https://staj-io-goldenilkay92-1.c9.io/api/v1/oauth/token 401(未授权)
但是当我尝试 post 与 postman 时它起作用了。
服务器端Headers
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');
Angular代码
服务
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/token 401(未授权)
如果一个 POST 有效而另一个无效,那么您的 angularjs $http 请求使用了错误的参数。
我建议您获得一个 http 分析器(如 Fiddler),然后比较 Postman 完成的实际请求与您 angular 应用程序完成的请求。
这是解决您问题的建议;
使用cors模块(不需要);
服务器端
我假设你的 passport 代码工作正常。
var cors= require('cors');
//init first.
app.options(cors({origin'*'})); //Use your origins.
app.use(cors({origin'*'})); //Use your origins.
客户端
只需删除 headers 个选项
//...
$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");
});
//...