Je suis en train de faire un service web RESTful appel dans mon JavaScript de la page et obtenez le message d'avertissement suivant:
"Cette page est accéder à l'information qui n'est pas sous son contrôle. Cela pose un risque pour la sécurité. Voulez-vous continuer?"
Maintenant que j'ai lu jusqu'à présent et je suis conscient de la croix-domaine, même origine. Cependant, je n'ai pas de tels avertissements lorsque je consomme d'autres Api comme Google Maps API. Clairement le domaine n'est pas le même que celui de mon domaine local. Quelle est la différence?
Ma première hypothèse est que Google est "importé" dans la page à l'aide de l' <script>
balise de tout mon RESTE de la consommation est à l'aide de XMLHttpRequest. SI c'est le cas, quelle est la différence entre ces deux approches que l'on mérite un avertissement et l'autre pas?
Résumé De La Solution:
Je voudrais résumer ce que la solution a ce problème. Vous pouvez trouver un utile URL ici.
Essentiellement, vous injecter du code dans les pages <script>
balise lors de l'importation de JavaScript. Rien importés par le biais de cette balise est immédiatement exécuté dans le contexte mondial. Donc au lieu de passer dans un fichier JavaScript, passer une URL vers un site web qui renvoie une page pas de balises HTML, mais plutôt une page qui renvoie un code JavaScript texte qui appelle un rappel dans votre code.
Vous utilisez les paramètres d'URL pour dire la page qu'est - 'callback', pour retourner et tous les paramètres qui doivent aller dans le rappel. Par exemple:
<script type="text/javascript" src="http://crossdomainhost/CrossDomainConsumerSite/Default.aspx?callback=myCallback¶m1=myParam"></script>
Lors de cette évaluation, la page renvoyée par le 'src' le paramètre est:
myCallback( myParam );
Sur le côté serveur, vous allez créer un site à l'URL qui l'emporte sur le OnLoad équivalents (quel que soit le langage côté serveur que vous utilisez). Au lieu d'une page HTML, le OnLoad prendra les paramètres de l'URL et re-swizzle pour correspondre à la fonction de rappel d'appel ci-dessus.
Lorsque la substitution est faite, le rappel est immédiatement appelée lorsque le client charge la page. L'avantage de ceci est que le 'src' URL ne pas correspondre au domaine de la page hébergée.
Voici ce que le client HTML page va ressembler à la fin:
<script type="text/javascript">
var myCallback = function( myParam ) {
alert( "this was called across domains!" );
};
</script>
<script type="text/javascript" src="http://crossdomainhost/CrossDomainConsumerSite/Default.aspx?callback=myCallback¶m=myParam></script>