问题
Using the jQuery rss pluging jFeed, and using their example code on their website, I have created the following code which does not seem to work:
jQuery.getFeed({
url: 'http://www.hotukdeals.com/rss/hot',
success: function(feed) {
alert(feed.title);
}
});
I get a message saying:
XMLHttpRequest cannot load http://www.hotukdeals.com/rss/hot. Origin http://intranet is not allowed by Access-Control-Allow-Origin.
Anyone know why I am getting this access control message? This rss feed works fine in my desktop and online rss readers...
回答1:
WARNING
The Google Feed API is officially deprecated and doesn't work anymore!
It can be done very easily without a plugin and the returned data would be in json
$(function(){
url = 'http://www.thetutlage.com/rss.xml';
$.ajax({
type: "GET",
url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=1000&callback=?&q=' + encodeURIComponent(url),
dataType: 'json',
error: function(){
alert('Unable to load feed, Incorrect path or invalid feed');
},
success: function(xml){
values = xml.responseData.feed.entries;
console.log(values);
}
});
});
Just make sure it points towards an xml file and change the url to url Rss feed,
回答2:
Your failing because of the same origin policy of JavaScript, which basically restricts you in the locations you can retrieve and manipulate files from.
In general you can't retrieve content (in your case an rss feed) from locations different than the current page. Exceptions are just images and scripts.
So one solution in your case may be to set up a proxy script on your server, which just calls the RSS feed and relays the results to your page. That way from the browser's perspective all content comes from the same origin.
来源:https://stackoverflow.com/questions/11346990/reading-rss-feed-with-jquery