【发布时间】:2016-01-26 05:45:43
【问题描述】:
我有一个在 Firefox、IE、Safari 和 Chrome 中运行良好的应用程序。但是在 Chrome 中,当下面的控制器运行时,它会停止工作。通过不工作,我的意思是在 $auth.login(user_info) 执行承诺中的代码之后失败。例如,如果调用成功返回,则应用程序将停止工作。当您单击任何链接时,什么都不会发生。 $location.path(lpath) 应该去主页,但它没有和 toastr.success("Login Success");应该显示一条消息,但只显示一个白色弹出窗口。
如果我使用 Chrome.exe --disable-web-security 运行 Chrome,那么一切正常。有没有人有什么建议?
angular.module("MyApp")
.controller("LoginCtrl", function($rootScope, $scope, $location, $auth, toastr) {
var lpath = "/home";
$scope.login = function() {
var user_info = { email:$scope.user.email, password:hex_sha512($scope.user.password)} ;
$auth.login(user_info)
.then(function(response)
{
if(response.data.rtn == "true")
{
$location.path(lpath);
toastr.success("Login Success");
}
else
{
toastr.error(response.data.msg);
}
})
.catch(function(response)
{
toastr.error("Host Login Error!");
});
};
});
$auth.login = function(user, opts) {
opts = opts || {};
opts.url = config.baseUrl ? utils.joinUrl(config.baseUrl, config.loginUrl) : config.loginUrl;
opts.data = user || opts.data;
opts.method = opts.method || 'POST';
return $http(opts).then(function(response) {
shared.setToken(response);
return response;
});
};
Shared.setToken = function(response) {
var accessToken = response && response.access_token;
var token;
if (accessToken) {
if (angular.isObject(accessToken) && angular.isObject(accessToken.data)) {
response = accessToken;
} else if (angular.isString(accessToken)) {
token = accessToken;
}
}
if (!token && response) {
var tokenRootData = config.tokenRoot && config.tokenRoot.split('.').reduce(function(o, x) { return o[x]; }, response.data);
token = tokenRootData ? tokenRootData[config.tokenName] : response.data[config.tokenName];
}
if (!token) {
var tokenPath = config.tokenRoot ? config.tokenRoot + '.' + config.tokenName : config.tokenName;
throw new Error('Expecting a token named "' + tokenPath + '" but instead got: ' + JSON.stringify(response.data));
}
storage.set(tokenName, token);
storage.set(emailName, response.data.email);
storage.set(permsName, response.data.permissions);
};
【问题讨论】:
-
你能显示
setToken()的代码吗? -
您的控制台中有任何消息吗?
-
似乎是 CORS 问题。
-
我添加了 setToken() 的代码。控制台中没有消息。
标签: javascript angularjs google-chrome