Ajax / Firebase仅适用于localhost(同源策略?)

时间:2012-07-26 16:49:06

标签: javascript ajax same-origin-policy firebase

我有一个适用于localhost的Firebase应用程序,但是当我从外部访问它时(通过在我的路由器中允许端口转发)或当我将其上传到Bluehost时,它不起作用。

此代码有效:

$(document).ready(function() {
    $("#button").click(function() {
        alert('Working!');
    });
});

但这不是:

var firebaseRef = new Firebase('[my firebase url]');

$(document).ready(function() {
    $("#button").click(function() {
        alert('Working!');
    });
});

经过一些研究后,我认为问题是Same Origin Policy,因为Firebase JS包括

http://static.firebase.com/demo/firebase.js

但是我的firebase引用是

http://gamma.firebase.com/

我找到了几种方法来解决这个问题,但想知道使用Firebase处理它的最佳方法(或者如果同源策略甚至是问题)。

2 个答案:

答案 0 :(得分:3)

我找到了答案 - 对我来说只是一个愚蠢的错误。

在搜索Firebase教程时,我发现了自己的错误。我收录了http://static.firebase.com/demo/firebase.js文件,而教程明确说明要包含http://static.firebase.com/v0/firebase.js文件。

我仍然很好奇为什么demo文件仅适用于localhost ...

答案 1 :(得分:1)

Firebase使用CORS作为REST客户端的RESTful API和WebSockets see this answer,因此这不是问题。

看起来像是与路由相关的问题。您是否在JavaScript控制台中遇到错误? “不起作用”有点抽象,更准确的错误可以帮助回答次要问题。