我在NW.JS中,我需要能够获得RSS,但目前只能从一些xml检索数据,而不是全部。我想我的问题可能是CORS。我尝试在我的ajax中“设置标题”,但是nw.js浏览器拒绝设置它们。
我已经尝试过这样的ajax了。
var cleanURL = "http://feeds.bbci.co.uk/news/uk/rss.xml"
$(document).ready(function() {
//feed to parse
var feed = cleanURL;
$.ajax(feed, {
accepts:{
xml:"application/rss+xml"
},
dataType:"xml",
success:function(data) {
//Credit: http://stackoverflow.com/questions/10943544/how-to-parse-an-rss-feed-using-javascript
$(data).find("item").each(function () { // or "item" or whatever suits your feed
var el = $(this);
console.log("------------------------");
console.log("title : " + el.find("title").text());
console.log("link : " + el.find("link").text());
console.log("description: " + el.find("description").text());
});
}
});
});
这适用于像http://feeds.bbci.co.uk/news/uk/rss.xml这样的站点,但是当我使用像feed://feed://feed/rss/uk.xml这样的站点时,如果我删除"feed://“,就会得到::FAILED_TO_LOAD_RESOURCE ..even。
我尝试在ajax中设置头文件
headers: {"Origin": "*"}
但我不确定这是如何工作的。
这是CORS问题吗?如果是,我如何在NW.JS中克服这一点
我也尝试过fetch(),但也有同样的结果,服务器拒绝向我发送数据。
我希望能够从任何RSS feed检索任何XML数据,而不必使用rss2json等API来做到这一点。
发布于 2019-02-05 04:31:22
所以事实证明欺骗用户代理到Chrome (即使NW.JS是建立在chrome上的!)让它工作起来。我使用了"Request“来做这件事。
var request = require('request');
var options = {
url: cleanURL,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(response.statusCode);
console.log(body);
}
}
request(options, callback);
https://stackoverflow.com/questions/54509167
复制相似问题