Pourquoi ne reçois-je pas un avertissement de «même politique d'origine» lors de l'utilisation de l'API Google Maps?

Je fais un appel de service Web RESTful dans ma page JavaScript et obtenez l'avertissement suivant:

"Cette page accède à des informations qui ne sont pas sous son contrôle. Cela pose un risque de sécurité. Voulez-vous continuer?"

Maintenant, j'ai lu ce sujet et suis au courant de la même politique d'origine dans le domaine croisé . Cependant, je ne reçois pas de tels avertissements lorsque je consomme d'autres API comme Google Maps API. De toute évidence, le domaine n'est pas identique à celui de mon domaine local. Quelle est la différence?

Mon estimation initiale est que Google est «importé» dans la page à l'aide de la <script> alors que ma consommation REST utilise XMLHttpRequest. Si tel est le cas, quelle est la différence entre ces deux approches qu'on pourrait mériter un avertissement et l'autre pas?

Ce qui suit pourrait expliquer les choses: http://markmail.org/message/5wrphjwmo365pajy

En outre, ils utilisent des scripts (par exemple, insérer un script dans le DOM pour obtenir les données demandées, au lieu de XHR).

J'aimerais résumer la solution à ce problème. Vous pouvez trouver une URL utile ici .

Essentiellement, vous insérez un code via la <script> lors de l'importation de JavaScript. Toute chose importée par cette balise est exécutée immédiatement dans le contexte global. Donc, au lieu de transmettre un fichier JavaScript, passez une URL vers un site Web qui renvoie une page qui ne contient pas de balises HTML, mais plutôt une page qui renvoie un texte de code JavaScript qui appelle un rappel dans votre code.

Vous utilisez les paramètres de l'URL pour indiquer à la page quels «retours de retour» à retourner et tous les paramètres qui doivent entrer dans le rappel. Par exemple:

 <script type="text/javascript" src="http://crossdomainhost/CrossDomainConsumerSite/Default.aspx?callback=myCallback&param1=myParam"></script> 

Lorsque cela est évalué, le contenu de la page renvoyé par le paramètre 'src' est:

 myCallback( myParam ); 

Du côté du serveur, vous créez un site sur cette URL qui remplace l'équivalent OnLoad (quelle que soit la langue côté serveur que vous utilisez). Au lieu de la page HTML, l'OnLoad prend les paramètres de l'URL et les remplace pour correspondre à l'appel de rappel ci-dessus.

Lorsque la substitution est effectuée, le rappel est immédiatement appelé lorsque le client charge la page. L'avantage de cela est que l'URL 'src' ne doit pas correspondre au domaine de la page hébergée.

Voici à quoi ressemble la page HTML du client à 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&param=myParam></script>