两个工作区之间的Cloud9 ajax调用

时间:2015-01-09 15:50:32

标签: ruby-on-rails angularjs cross-domain cloud9-ide

我想设置我的Cloud9工作区来处理rails api projet。 repo包含2个项目,rails json api和front(angular app)。

由于cloud9不提供两个外部端口,因此无法在同一工作区上运行它们。 我创建了两个不同的工作区,一个运行rails api,另一个运行角度应用程序(由小节点进程提供)。

一切都很好,除了当我尝试调用api(ajax call => $ http)时,我收到了一个交叉来源请求警告。

XMLHttpRequest cannot load https://workspace-user.c9.io/. The request was redirected to 'https://c9.io/api/nc/auth?response_type=token&client_id=proxy&redirect=http%3A%2F%2Fworkspace-user.c9.io%2F', which is disallowed for cross-origin requests that require preflight.

我该如何防止这种情况?

谢谢

ps:真正的网址不是工作区用户,我确实改变了它。

2 个答案:

答案 0 :(得分:3)

让我们说你的域名是:

https://ws1-user.c9.io (page which performs ajax is located here) 
https://ws2-user.c9.io  (destination url)

在ws2-user.c9.io中打开终端并写:

sudo vim /etc/apache2/sites-enabled/001-cloud9.conf 

添加以下行:

Header set Access-Control-Allow-Origin "https://ws1-user.c9.io"

在终端写道:

sudo a2enmod headers
service apache2 restart

现在应该可以了。

答案 1 :(得分:0)

您可以使用特殊的CORS标头指定允许连接的站点。有关详细信息,请参阅:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS