在Backbone中,seems to be encouraged that collection resources return bare arrays。这似乎是driven by the Rails model of doing things,这不是在所有做某事的好理由。我有一些问题:
另一方面,我可以看到“裸”数组如何使API更自然:
免责声明:这里的前提可能完全有缺陷。我意识到REST远远超过HTTP Verbs和JSON。
答案 0 :(得分:2)
您引用的安全问题是由于脚本包含请求的JSON数组可以通过覆盖本机javascript数组类型来评估的CSRF漏洞。 Here's a good explanation of the vulnerability。 AFAIK,使用普通的JSON对象是不可能的。
但是,Backbone并不会阻止您收集回复。您可以在填充集合之前覆盖Backbone.Collection.parse以“解包”或以其他方式修改原始响应。
var MyCollection = Backbone.Collection.extend({
model:MyModel,
parse: function(response) {
//Assume the response looks like { "data": [ ... ] }
return response.data;
}
});
我通常更喜欢包装集合响应,不仅是出于安全原因,还因为它允许API具有更大的灵活性和变化弹性。