javascript - referernotallowedmaperror - ¿Por qué no aparece una advertencia de ''misma política de origen'' cuando uso la API de Google Maps?
google maps javascript api error: referernotallowedmaperror (2)
Lo siguiente podría explicar cosas: http://markmail.org/message/5wrphjwmo365pajy
Además, emplean algunos hacks de scripts (por ejemplo, insertar una secuencia de comandos en el DOM para obtener datos solicitados, en lugar de XHR).
Estoy haciendo una llamada de servicio web RESTful en mi página de JavaScript y recibo la siguiente advertencia:
"Esta página está accediendo a información que no está bajo su control. Esto plantea un riesgo de seguridad. ¿Desea continuar?"
Ahora he leído sobre esto y estoy al tanto de la política de origen del mismo dominio cruzado . Sin embargo, no recibo tales advertencias cuando consumo otras API, como Google Maps API. Claramente, el dominio no es lo mismo que mi dominio local. ¿Cuál es la diferencia?
Mi conjetura inicial es que Google se ''importa'' en la página usando la etiqueta <script>
mientras mi consumo de REST está usando XMLHttpRequest. Si ese es el caso, ¿cuál es la diferencia entre estos dos enfoques que uno merecería una advertencia y el otro no?
Me gustaría resumir cuál fue la solución para este problema. Puede encontrar una URL útil teamlalala.com/blog/2009/04/14/… .
Esencialmente, se inyecta código a través de la etiqueta <script>
las páginas al importar JavaScript. Todo lo importado a través de esta etiqueta se ejecuta inmediatamente en el contexto global. Entonces, en lugar de pasar un archivo JavaScript, ingrese una URL a un sitio web que devuelve una página no de etiquetas HTML, sino una página que devuelve texto de código JavaScript que llama a una devolución de llamada en su código.
Utiliza parámetros de URL para indicar a la página qué devolución de llamada devolver y los parámetros que deben incluirse en la devolución de llamada. Por ejemplo:
<script type="text/javascript" src="http://crossdomainhost/CrossDomainConsumerSite/Default.aspx?callback=myCallback¶m1=myParam"></script>
Cuando esto se evalúa, el contenido de la página devuelto por el parámetro ''src'' es:
myCallback( myParam );
En el lado del servidor, creará un sitio en esa URL que anule el equivalente de OnLoad (con el idioma del servidor que esté utilizando). En lugar de HTML de página, OnLoad tomará los parámetros de URL y los volverá a mezclar para que coincidan con la llamada de devolución de llamada anterior.
Cuando se realiza la sustitución, se llama inmediatamente a la devolución de llamada cuando el cliente carga la página. El beneficio de esto es que la URL ''src'' no tiene que coincidir con el dominio de la página alojada.
Así es como se verá la página HTML del cliente al final:
<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>