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

 晴晴qing951025 发布于 2023-01-03 08:30

我正在用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      : ''
    }

});

收藏

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

    model : App.Models.Projeto,

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

});

在控制台上

var projetos = new App.Collections.Projetos;

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

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

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

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

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有