我想获取RSS源并在我的Backbone App中显示它们。我可以这样做吗?:
function (App, Backbone) {
var Rss = App.module();
Rss.View = Backbone.View.extend({
template: 'rss',
initialize: function() {
this.listenTo(this.collection, 'all', this.render)
},
serialize: function() {
return this.collection ? this.collection.toJSON() : [];
}
});
Rss.RssCollection = Backbone.Collection.extend({
url: function() {
return 'http://feeds.bbci.co.uk/news/rss.xml';
}
});
Rss.Model = Backbone.Model.extend({
url: 'http://feeds.bbci.co.uk/news/rss.xml',
defaults: {
title: '',
description: '',
pubdate: ''
}
});
return Rss;
}
然后我的HTML模板如下:
<p>{{title}}</p>
<p>{{description}}</p>
<p>{{pubdate}}</p>
但我得到No 'Access-Control-Allow-Origin' header is present on the requested resource
。那么,我该如何避免这种情况呢?我的Backbone方法是否正确?
提前致谢...
答案 0 :(得分:0)
您收到的错误表示由于CORS policy,您的浏览器无法从运行此应用的网页/域中获取“http://feeds.bbci.co.uk/news/rss.xml”上的资源。
您可以通过将feeds.bbci.co.uk
网址添加到Access-Control-Allow-Origin
HTTP标头来解决该CORS问题,但这不会解决所有问题,因为您的浏览器不接受您从另一个网站注入内容的帽子源。
如果你使用(d)像Superfeedr这样的服务(我创建它!),你的骨干方法可以工作,它可以将feed转换为JSON,并带有可以用新数据调用的回调。