Bonjour à tous !

J'essaye de récupérer des articles de presse sur une équipe de football depuis du XML. Lorsque j'utilise les flux RSS de L'Équipe et de Le Monde, aucun soucis, les articles s'affichent bien comme je veux, avec les données que je veux.

Seulement quand j'essaye d'ajouter plus de flux provenant d'autres sites, par exemple Le Parisien ou Le 10 Sport, et bien la ça coince et j'ai une erreur :
Failed to load https://le10sport.com/fr/rss/football/: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

J'ai donc fait des recherches sur cette erreur, et si j'ai bien compris le domaine questionné n'est pas autorisé à me répondre, donc je dois modifier l'en-tête de ce dernier pour autoriser la réponse. Seulement, vous vous en doutez, je ne pense pas pouvoir modifier cela.

Comme je trouve ça bizarre que des sites mettent à disposition des données XML mais qu'on ne peut y accéder, n'y a-t-il pas un moyen d'y accéder ? Ou alors je dois oublier l'idée d'utiliser les données de ces sites ?

Voici mon code JavaScript
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 
class Article {
        constructor(title, link, description, pubDate, enclosureURL, guid){
                Object.assign(this, {title, link, description, pubDate, enclosureURL});
        }
        toString(){ //Redéfinition de la méthode toString()
                let str = "";
 
                str += "Titre : " + this.title + "\n";
                str += "Description : " + this.description + "\n";
                str += "Url : " + this.link;
 
                return str;
        }
        toHTML(){ //Définition d'une méthode toHTML() qui permet d'afficher l'article dans le HTML
                let str = "";
 
                //Titre et lien de l'article
                str += "<a href =" + this.link + " target = _blank>" + this.title + "</a>";
                //Description et date de publication de l'article
                str += "<p class = date>Publié le " + days[this.pubDate.substring(0,3)] + " " 
                + this.pubDate.substring(4,7) + " " + months[this.pubDate.substring(8,11)] + ", à " + this.pubDate.substring(17,19) + "h"
                + this.pubDate.substring(20,22) + "</p>";
                //Image de l'article
                str += "<img src =" + this.enclosureURL + " class = img_art>";
 
                return str;
        }
}
 
//Array qui contiendra les articles récupérés.
let arArticles = [];
 
//Array contenant les url des données XML à lire.
let arURL = ['https://www.lequipe.fr/rss/actu_rss_Football.xml', 'http://www.lemonde.fr/football/rss_full.xml', 'http://le10sport.com/fr/rss/football/'];
 
var init = function() {
        document.getElementById("art").innerHTML = ""; //On rends la section vide.
 
        //document.getElementById("b").onclick = alert('1');
        for (var i = 0; i < arURL.length; i++) {
            getArticleInfos(arURL[i]);
        };
 
}
 
//Fonction qui parcours le XML et récupère les bonnes informations sur les articles.
function getArticleInfos(url) {
        const xhr = new XMLHttpRequest();
 
        xhr.open("GET", url, true);
 
        xhr.onload = function() {
                const
                        doc = xhr.responseXML,
                        items = Array.from(doc.querySelectorAll("item"));
                        magImg = doc.querySelector("image").querySelector("url").textContent; //On récupère le logo du magazine.
 
                for (const item of items){
                        if ((item.querySelector("title").textContent.indexOf("PSG") != -1)) { //Séléction d'articles comportant 'PSG' dans le titre
                          let
                                ObjArticle = new Article(
                                        item.querySelector("title").textContent,
                                        item.querySelector("link").textContent,
                                        item.querySelector("description").textContent,
                                        item.querySelector("pubDate").textContent,
                                        ((item.querySelector("enclosure") != null) ? item.querySelector("enclosure").getAttribute("url") : "#"),
                                );
 
                        arArticles.push(ObjArticle);
                        };
 
                }
 
                const
                        elemMain = document.getElementById("art"),
                        elemArticle = document.createElement("article");
 
                for (const obj of arArticles){
                        let article = elemArticle.cloneNode();
                        article.innerHTML = "<img src = " + magImg + " width = 119 height = 28> <br>" //On affiche le logo du magazine.
                        article.innerHTML += obj.toHTML(); //On affiche l'article.
                        elemMain.appendChild(article);
                }
                arArticles = [];
        };
 
        xhr.send(null);
}             
 
window.onload = init;
Merci d'avance !