Firebase:为什么$ firebaseSimpleLogin会抛出SecurityError?

时间:2014-06-26 13:30:10

标签: angularjs firebase angularfire firebasesimplelogin

我正在尝试使用Firebase简单登录机制注册用户:

angular.module('MyApp').controller('LoginCtrl', function($scope, $firebaseSimpleLogin, FIREBASE_ROOT) {
  $scope.loginService = $firebaseSimpleLogin(new Firebase(FIREBASE_ROOT));
  $scope.user = {
    email: '',
    password: ''
  };

  $scope.register = function() {
    console.log('creating user...'); // I see this
    $scope.loginService.$createUser($scope.email, $scope.password).then(function(user) {
      console.log('done!'); // But not this
      console.log(user);
    });
  };
});

但是,我在控制台中看到以下错误:

Uncaught SecurityError: Blocked a frame with origin 
"https://s-dal5-nss-15.firebaseio.com" from accessing a frame with origin
"http://localhost:8100".  The frame requesting access has a protocol of "https", 
the frame being accessed has a protocol of "http". Protocols must match.

并且,$createUser回调未执行。

我启用了“电子邮件和密码”身份验证,并将localhost放入了授权请求来源列表中。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

简单地说,您的“域”(本例中为localhost)为http,而原点为https,这往往会导致这类错误。我相信如果它们匹配(但是,在这种情况下,两者都必须是HTTPS),这应该不再是一个问题:

  

请求访问的帧具有协议“https”,即帧   被访问的协议为“http”。 协议必须匹配。

可以在REST API Reference | Firebase Documentation上找到更多信息:

  

请注意,HTTPS是必需的。 Firebase仅响应加密流量,以确保您的数据安全。