2011-08-18 251 views
12

我有兩個當地的Rails應用,我想相互交談用於測試目的...一個在端口3000上運行,另一個在9292訪問控制允許來源問題

但是,當我從本地主機建立一個Ajax請求:3000爲localhost:9292我不斷收到這樣的問題:

Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin.

關於如何解決此問題的任何想法?

我正在使用簡單的Sinatra應用程序來接收(僅用於測試目的)JSON請求。下面是我有兩個Rails應用(在端口9292上的3000端口一個,另一個)
工作守則

before do 
    headers['Access-Control-Allow-Origin'] = '*' 
    headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS' 
    headers['Access-Control-Allow-Headers'] = 'X-Requested-With, X-Prototype-Version, X-CSRF-Token' 
end 

after do 
    headers['Access-Control-Allow-Origin'] = 'http://localhost:3000/' 
end 

希望這有助於互相交談,在localhost!

+3

看看JSONP http://en.wikipedia.org/wiki/JSONP – Gazler

回答

4

出於安全原因,通常不允許跨域AJAX。如果您能夠使用它,JSONP是一個選項。如果沒有,你可以使用類似flXHR來解決這個限制。

祝你好運!

+2

我通過關注這個博客瞭解了它:http://www.tsheffler.com/blog/?p = 428 ...我將在上面編輯我的代碼庫 – dennismonsewicz

+0

這是不正確的。如果服務器指定響應頭中允許源,則允許跨站點ajax。 – doug65536

+0

你是對的,設置Access-Control-Allow-Origin,Access-Control-Allow-Methods等將允許跨域的Ajax請求。 –

0

對我來說,有一個50X/40X的狀態回來了Chrome/WebKit顯示了一個名爲Access-Control-Allow-Origin Error。

我玩了我的迴應,直到我得到了201,現在它的工作!