2016-12-10 1 views
0

ich wahrscheinlich das alles falsch mache ... ich irgendwie das Gefühl, ich bin flailing etwa mit dem Code ...Mit CORS in JQuery RSS-Datei holen

ich damit begonnen:

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(); 

Und ich habe folgendes: Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden.

Okay .... so sah ich im ganzen Netz. Ich habe eine Erweiterung in Chrome gefunden, die, wenn sie aktiviert ist, funktioniert - aber das hilft mir nicht für eine Live-Website. Ich habe im Internet nach Informationen über CORS gesucht und die Dokumentation nicht verstanden. Ich habe den Eindruck, dass ich Kopfzeileninformationen weitergeben muss, aber ich bin mir nicht sicher, wo oder wie.

fand ich dies und versuchte es:

$.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); 
    }); 

Hier ist die Fehlermeldung, die ich jetzt bekommen: Antwort auf Preflight-Anfrage nicht Zugriffsprüfung nicht besteht: Nein 'Access-Control-Allow-Origin' Header ist auf der angeforderten Ressource vorhanden.

Es mag albern für mich zu fragen, aber ist die angeforderte Ressource die RSS-Feed Ich suche Daten zu bekommen? Oder ist es mein Dokument? Ich habe so viel darüber gelesen, dass sich mein Kopf und meine Augen vor Verwirrung drehen. Bitte helfen Sie!

Dank

+0

Dies bedeutet, dass CNN nicht zulässt, dass 'http: // rsss.cnn.com/rss/edition.rss' mit clientseitigem JavaScript von einer anderen Domäne als der eigenen abgerufen wird. – Paulpro

+0

Sie müssten den Header "Access-Control-Allow-Origin" hinzufügen; Sie können nichts anderes tun als über einen Server anstatt direkt im Browser anzufordern. – Paulpro

Antwort

0

Die Ressource ist fragen (die RSS-Datei) in den Server des CNN. Sie können jedoch nicht von Ihrem Browser aus darauf zugreifen. Deshalb erhalten Sie den CORS-Fehler. Es gibt verschiedene Möglichkeiten, dieses Problem zu lösen, etwa die Verwendung von JSONP. Trotzdem muss CNN jsonp auf seinem Server aktivieren.

Das einzige, was Sie tun können, ist Access-Control-Allow-Origin auf der Serverseite aktivieren und dann anfordern.