javascript - Backbone 获取请求是 OPTIONS 方法

标签 javascript jquery backbone.js

我有一个 Backbone Collection 对象,其 URL 为 http://localhost:8080/api/menu/1/featured

我正在尝试执行提取操作以从 URL 检索集合并解析它。但是,在服务器端,我看到此请求的方法类型是 OPTIONS。服务器只假设支持 GET 方法。我不确定 Backbone 如何确定要使用的方法类型,以及为什么它有时会随机更改为 OPTIONS 方法类型。我正在使用 Node.js 服务器来处理请求。下面这段代码几乎就是我所做的。

var FeaturedCollection = Backbone.Collection.extend({
    model:FeaturedContent,
    url:function () { return url_featured; },
    parse:function (response) {
        console.log(response);
        return response;
    }
});

var featuredCollection = new FeaturedCollection();
featuredCollection.fetch();

最佳答案

已经有一段时间了,但我记得以前遇到过这个问题。这可能有两件事:默认情况下,Backbone 会尝试对您的后端执行 RESTful API 调用,这意味着 GET、POST、PUT 和 DELETE。

许多后端没有构建真正的 REST 支持,只支持 GET 和 POST。当 Backbone 发送 PUT 或 DELETE 命令时,您的浏览器(不是 Backbone)会首先自动发送一个 OPTIONS 请求,以查看是否允许它发出此类请求。如果您的服务器响应不正确,此调用将失败,并且 Backbone 可能不会执行任何操作。

要解决此问题,请设置 Backbone.emulateHTTP = true; 或者让您的服务器正确响应 OPTIONS 调用。有关详细信息,请参阅文档:http://backbonejs.org/#Sync-emulateHTTP

另一个问题是您正在跨域/子域发出 ajax 请求,您需要正确启用 CORS。这还包括正确回答 OPTIONS 请求。

关于javascript - Backbone 获取请求是 OPTIONS 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11300874/

相关文章:

javascript - RCT链接管理器 : Listening to application urls in iOS

javascript - 需要替换对象值

php - 使用隐藏的 <input> 并将其值设置为 php 中的某个内容然后传递给 jquery 不好吗?

javascript - 任何人都可以给我关于如何让它在 ie 中工作的建议吗?

django - 手动构造 JSON 并手动处理 GET、POST 而不是使用适当的 RESTful API 来实现 AJAX 功能是否很麻烦?

javascript - 无法使用 Node js 访问桌面应用程序中的窗口关闭功能

javascript - 尝试加载本地 json 文件,但无法在外部范围中读取它

javascript - S3 使用 aws-sdk v3 为 PutObject 命令预签名 url 提供 SignatureDoesNotMatch 错误

javascript - 为 async.parallel 编写测试。

javascript - 未捕获的类型错误 : Cannot call method 'replace' of null