301重定向防止在Openshift上发出CORS选项请求

FIl*_*ina 5 javascript cors backbone.js openshift

我正在用Laravel 4编写一个RESTful api,它将被Backbone.js应用程序使用.

当我使用GIT部署我的代码时,我收到一条消息说:

应用程序目录"public /"被选为DocumentRoot

使用Backbone.js应用程序时,PUT,GET和DELETE请求被正确处理,但是当我尝试发出POST请求时,由于重定向,预检请求(OPTIONS)失败:

请求方法:选项
状态代码: 301永久移动

在控制台上出现此错误:

XMLHttpRequest无法加载http://MY-DOMAIN.rhcloud.com/projetos/.请求被重定向到'http://MY-DOMAIN.rhcloud.com/projetos',这对于需要预检的跨源请求是不允许的.

这是因为CORS策略:

如果响应的HTTP状态代码为301,302,303,307或308,则
应用缓存和网络错误步骤.

我怎样才能克服这个问题?有没有办法绕过或配置Openshift重定向?

>>>编辑

我在Chrome javascript控制台上收到此错误,因为我的Backbone App仍处于开发阶段.这里是复制问题的步骤:

我有一个全局命名空间"App",我的项目以这种形式组织:App.Models,App.Collections等.

该模型

App.Models.Projeto = Backbone.Model.extend({

    defaults : {
        codigo      : '',
        titulo      : '',
        url         : '',
        status      : ''
    }

});
Run Code Online (Sandbox Code Playgroud)

收藏

App.Collections.Projetos = Backbone.Collection.extend({

    model : App.Models.Projeto,

    url : 'http://MY-DOMAIN.rhcloud.com/projetos'

});
Run Code Online (Sandbox Code Playgroud)

在控制台上

var projetos = new App.Collections.Projetos;

projetos.create({
    titulo : "blablabla",
    codigo : "12jk4h3",
    url    : "example.com",
    status : 0
});
Run Code Online (Sandbox Code Playgroud)

我可以在集合中获取,编辑和删除模型.我唯一不能做的就是创造一个新的.

最后一件事,我被重定向到的URL是相同的URL,但最后没有"/".

因此,即使集合中的"url"属性设置为http://MY-DOMAIN.rhcloud.com/projetos它,似乎Backbone添加了一个"/",然后在服务器中,它被重定向.