2012-09-22 9 views
16

Quiero publicar mis scripts de JavaScript desde un CDN como cloudflare.Política de origen idéntico y servicio de JS desde un CDN

Ahora mis scripts se comunican con mi servidor de aplicaciones a través de ajax. ¿No entrarían en juego las restricciones de política del mismo origen cuando cargue estos scripts desde un CDN?

Digamos que mi aplicación está en el dominio:

http://app.com 

Y cargo mis guiones de

http://cdn.com/xyz/all.js 

Ahora, puesto que mis guiones se cargan desde un dominio distinto del dominio de mi aplicación es huyendo, creo que la misma política de origen me impediría hacer una comunicación jajax con mi aplicación.

¿Me sale algo mal?

Respuesta

19

No, funcionará. Es por eso que JSONP funciona. El "origen" del script es la página en la que se ejecuta, no de dónde proviene.

A medida que preguntó por él, aquí es una referencia (no pude encontrar nada mejor, pero Crockford es bien conocido)

El atributo src, sorprendentemente, no se ve limitada por la política del mismo origen. Esto significa que se puede crear un elemento de script que puede ir a cualquier servidor, buscar un script y ejecutarlo. Si la secuencia de comandos causa la entrega de datos codificados en JSON, esto es algo muy útil. Desafortunadamente, no hay forma de restringir el script o inspeccionarlo antes de que se ejecute. Se ejecuta con la misma autoridad que los scripts de la página. Entonces el script puede acceder y usar sus cookies. Puede acceder al servidor de origen utilizando la autorización del usuario. Puede inspeccionar el objeto global DOM y JavaScript, y enviar cualquier información que encuentre en cualquier parte del mundo. El Script Hack Tag no es seguro y debe evitarse.

http://javascript.crockford.com/script.html

No

realmente una referencia: Si esto no funcionaría, nadie podría incluir jQuery de CDN de Google y luego usarlo es $.ajax método.

+0

La razón por la que JSONP funciona es porque puedes ** OBTENER ** secuencias de comandos desde cualquier lugar. Pero lo que tengo que hacer es ** POST ** a un servidor que tenga un dominio diferente al origen del script. Por favor, aclare su respuesta un poco más – treecoder

+0

Ahora está mezclando dos cosas. Su secuencia de comandos se obtiene usando * GET * del CDN. Después de eso, vive en el dominio de app.com – Prinzhorn

+0

No sé qué es lo que no obtengo aquí, pero un script cargado desde el dominio A NO puede enviar datos al dominio B, ¿verdad? Si estoy en lo cierto, ¿cómo puede una secuencia de comandos cargada desde CDN hablar con un dominio completamente diferente del servidor de la aplicación? – treecoder

Cuestiones relacionadas