2010-12-14 58 views
1

J'ai une page web qui doit charger deux flux rss séparés et les afficher dans un téléscripteur. La page se charge et fonctionne bien sur ma propre machine mais quand je la mets sur notre serveur web Apache, elle ne charge rien. Quand j'ouvre la console de débogage, il montre l'erreur suivante (dans Safari 5.0.2):XMLHttpRequest pour la page html sur le serveur web mais pas en développement

NETWORK_ERR: XMLHttpRequest Exception 101: Une erreur réseau est survenue dans les requêtes synchrones

Comment puis-je résoudre ce problème?

Voici les grandes lignes des méthodes javascript pour charger les flux rss.

function init() { 
     // get RSS forecast 
     getRSS("http://weather.yahooapis.com/forecastrss?p=63211"); 
     getRSS("http://webserver.com/reader.xml"); 
    } 

function getRSS (url) { 
    xmlhttp=new XMLHttpRequest(); 
    xmlhttp.open("GET", url, false); 
    xmlhttp.send(); 
    xmlobject=xmlhttp.responseXML; 
    // code to process response here... 
    } 
+0

1. Je pense que vous avez le titre de votre question à l'envers 2. Que se passe-t-il lorsque vous chargez l'URL problématique dans votre navigateur manuellement? –

+0

Si vous le définissez sur true au lieu de false et utilisez le paramètre onreadystatechange, quel est le statut http/statusText? – epascarello

+0

Ouais, je pensais avoir corrigé le titre après l'avoir posté, mais c'est comme ça. Quand je mets le drapeau à true, ça ne marche pas du tout, même sur la machine Dev. StatusText est OK, statusText est 200. Je ne suis pas sûr de savoir comment utiliser onreadystatechange. – solerous

Répondre

2

problème est que JavaScript a le contenu same origin policy vous ne pouvez donc pas saisir d'un autre domaine.

+0

En supposant bien sûr que la configuration du développement n'est pas accessible via 'webserver.com'. Lorsque je travaille dans mon environnement de développement, j'utilise souvent le fichier hôte pour remplacer l'entrée DNS de mon domaine, de sorte que lorsque j'accède à mydomain.tld, je suis dirigé vers la boîte de dev. – UnkwnTech

+0

Merci pour la réponse. Ni le flux RSS de yahoo (évidemment) ni 'webserver.com' ne sont hébergés sur le serveur web sur lequel j'essaye de déployer (juste pour être clair). Je n'ai rien mis de spécial sur ma machine à deviner quoi que ce soit, alors je suis étonné de savoir pourquoi cela fonctionnerait en fonction de ce que vous avez dit. N'est-il pas possible de simplement consommer des flux RSS comme celui-ci via html? Je pensais que c'était ce que XMLHttpRequest était pour. – solerous

+0

Si vous voulez récupérer des choses entre domaines, certains navigateurs prennent en charge CORS, mais la solution la plus simple consiste à créer un proxy sur votre serveur. – epascarello