2011-08-18 178 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,现在它的工作!