我可能做错了......我觉得我对代码很不满......
我从这开始:
function getData(){
//getting XML data
$.get('http://rss.cnn.com/rss/edition.rss', function(d){
//need to capture the data to process the data.
//we are representing the data with the letter d
console.log(d); //this method is good to see the structure of the data if you don't know it already
$(d).find('item').each( function(){
//find each item and do the following:
var article = $(this);
var title = article.find('title').text();
var description = article.find('description').text();
var guid = article.find('guid').text();
var date = article.find('pubDate').text();
var theText = '<article><h3><a href="'+guid+'">'+title+'</a></h3><p>Published on:'+date+'</p><p>'+description+'</p>';
$('#content').append(theText);
}); //end each
}) //end anon func
}//end getData();
getData();
我得到以下内容:No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。
好的......所以我在网上看了一遍。我找到了Chrome的扩展程序,如果启用它可以让它工作 - 但这不会帮助我建立一个实时网站。在网上查找有关CORS的信息,我不懂文档。我得到的印象是我必须传递标题信息,但我不知道在哪里或如何。
我找到了并试了一下:
$.ajax({
type: "GET",
headers: {"Access-Control-Allow-Origin": "http://rss.cnn.com",
"Access-Control-Allow-Headers":"content-type" },
url: "http://rss.cnn.com/rss/edition.rss"
}).done(function (data) {
console.log(data);
});
以下是我现在收到的错误消息: 对预检请求的响应没有通过访问控制检查:否&#39;访问控制 - 允许 - 来源&#39;标头出现在请求的资源上。
对我来说这可能看起来很愚蠢,但是我想要获取数据的rss feed所请求的资源是什么?或者是我的文件。我已经读了这么多,我的头和眼睛都在混乱中旋转。请帮忙!
由于
答案 0 :(得分:1)
var requestOptions: RequestInit = {
method: 'GET',
redirect: 'follow'
};
const CORS_PROXY = "https://cors-anywhere.herokuapp.com/"
fetch(CORS_PROXY + "http://fetchrss.com/rss/5f56c6803c140278522985135f56c72f61579219a908f6e2.json", requestOptions)
.then(response => response.json())
.then(result => console.log(result))
.catch(error => console.log('error', error));
四年后更新,因此如果上下文无关,请随时删除。尝试添加对我有用的CORS_PROXY位。我在rss-parse npm模块文档https://www.npmjs.com/package/rss-parser
中找到了修复程序答案 1 :(得分:0)
您要求的资源(rss文件)位于CNN的服务器中。但是,他们不允许您从浏览器访问。这就是您收到CORS错误的原因。有不同的方法来克服这个问题,比如使用JSONP。但是,CNN仍然必须在其服务器中启用jsonp。
您唯一能做的就是在服务器端启用Access-Control-Allow-Origin
,然后请求。