我想获取用于身份验证的访问令牌。我的帖子结果如
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/token 401(未经授权)
答案 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所做的实际请求与您使用角度应用程序所做的请求。