我在尝试使用firebase实现简单的登录身份验证(电子邮件/密码)时,从浏览器收到CORS错误。
我检查了安全规则,并将其设置为
{
"rules": {
".read": true,
".write": true
}
}
以下是该示例中代码的摘要。
<script src="https://cdn.firebase.com/js/client/1.0.15/firebase.js"></script>
<script type='text/javascript' src='https://cdn.firebase.com/js/simple-login/1.5.0/firebase-simple-login.js'> </script>
var myRootRef = new Firebase('https://vivid-fire-myserver.firebaseio.com/');
var authClient = new FirebaseSimpleLogin(myRootRef, function(error, user) {
if (error) {
alert(error);
return;
}
if (user) {
alert('user already logged in');
} else {
alert('user logged out');
}
});
$("#registerButton").on("click", function() {
var email = $("#email").val();
var password = $("#password").val();
authClient.createUser(email, password, function(error, user) {
if (!error) {
alert('registered successfully');
} else {
alert(error);
}
});
});
答案 0 :(得分:1)
问题似乎是提交表单的结果,导致页面重新加载。正如Rob所证实的那样,重新加载发生在HTTP OPTIONS请求服务器检查CORS配置能够完成之前。
解决方法是防止表单在提交时重新加载。我通过在我的html表单和我的jquery脚本中返回false来做到这一点。
<form class="m-t" role="form" onSubmit="return goLogin()">
..........
function goLogin() {
$("#loginButton").click(function() {
......
)};
return false;
}