XMLHttpRequest ne peut pas charger Origine n'est pas autorisée par Access-Control-Allow-Origin
Je suis d'essayer d'obtenir un http://fichier javascript via xhr mais je suis en cours d'exécution dans l'erreur mentionnée ci-dessus.
Voici mon code:
function getXHR() {
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if (is_chrome) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://api.widgets.org/widget/1.1.2/widget_api.js?autoCreate=false&log=true", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var s = document.createElement('script');
s.textContent = xhr.responseText;
(document.head||document.documentElement).appendChild(s);
s.parentNode.removeChild(s);
}
}
xhr.send();
}
}
Ce n'est que pour Chrome parce que je voudrais utiliser le script dans https://, mais Chrome bloque automatiquement tout ce à partir de http://. Le serveur à partir duquel je reçois le script n'est pas exécuté https://et j'ai BESOIN d'un script ou d'avoir plusieurs scripts, je préfère ne pas tout copier dans un fichier de données.
L'erreur, je suis en cours d'exécution dans:
XMLHttpRequest cannot load http://api.widgets.org/widget/1.1.2/widget_api.js?autoCreate=false&log=true. Origin https://mysite.com is not allowed by Access-Control-Allow-Origin.
Vous devez vous connecter pour publier un commentaire.
Il suffit d'insérer le
<script>
tag directement à la place de ce XHR enveloppe et ensuite d'insérer le contenu d'un<script>
tag.D'ailleurs, je ne sais pas, pourquoi vous essayez de supprimer l'élément script après le chargement. Cette habitude de nuire à l'un quelconque des objets/méthodes/variables créées à l'intérieur de ce code.
J'ai changé de chemin d'accès complet du fichier de serveur à court chemin d'accès comme suit.
Changé,
Puis a bien fonctionné dans google chrome.
Navigateur bloc XHR les demandes effectuées sur un serveur différent du serveur de la page en faisant la demande, pour des raisons de sécurité liées à la cross-site scripting.
Si c'est juste un script que vous voulez charger, utiliser
Générale XHR, vous pouvez utiliser le jsonp solution de contournement, si l'api offre, ou d'en demander les opérateurs de l'API pour permettre CORS (cross-origin resource sharing)
http://developer.chrome.com/extensions/xhr.html
https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS
http://www.w3.org/TR/cors/
http://en.wikipedia.org/wiki/JSONP