【问题标题】:Cloud9 ajax call between two workspaces两个工作区之间的 Cloud9 ajax 调用
【发布时间】:2015-03-07 23:51:22
【问题描述】:

我正在尝试设置我的 Cloud9 工作区以在 rails api 项目上工作。该 repo 包含 2 个项目,rails json api 和前端(角度应用程序)。

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

一切都很好,除了当我尝试调用 api(ajax 调用 => $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:真正的 url 不是工作空间用户,我确实改变了它。

【问题讨论】:

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


    【解决方案1】:

    假设您的域是:

    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
    

    它现在应该可以工作了。

    【讨论】:

      【解决方案2】:

      您可以使用特殊的 CORS 标头指定允许连接的站点。更多信息请见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-21
        • 2020-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多