2011-11-18 12 views

Respuesta

10

CORS es para solicitudes ajax o solicitudes de flash que el flash normalmente no permitiría. Por ejemplo, si no hay una política de dominios cruzados para el dominio x, y recuperas un archivo mp3 desde allí mediante el flash para la reproducción, flash no te permitirá leer las etiquetas id3 del archivo mp3. Para ajax, no puede realizar la solicitud si el servidor de destino no tiene una política de dominios cruzados que permita que su dominio realice solicitudes.

La mensajería entre dominios le permite comunicarse con un iframe en el documento que es de origen diferente. Por ejemplo, si tiene un iframe de video de YouTube, puede pasar un mensaje a ese iframe para cambiar el volumen. Normalmente, no sería posible comunicarse porque el iframe tiene un origen diferente, por lo que no se puede hacer nada con el iframe de YouTube mediante programación.

Las razones para usar una u otra deberían estar claras. CORS le permite solicitar datos de otro origen mientras el mensaje que pasa entre la ventana principal y un iframe se usa cuando desea comunicarse con una aplicación que está dentro del iframe pero que no tiene el mismo origen.

Un ejemplo práctico:

1.You tienen un iframe que tiene un reproductor de YouTube.

2. Solicite algunos videos para jugar desde la API de datos de youtube (CORS, podría ser JSONP, XHR o lo que sea).

3.You ahora pasar un mensaje a varios dominios a la iframe para empezar a jugar cualquiera del video que ha solicitado en el paso # 2

1

En primer lugar debe tener en cuenta que CORS se apoya en los siguientes navegadores: Internet Explorer 8+, Firefox 3.5+, Safari 4+ y Chrome. Tenga en cuenta que IE7 y versiones anteriores de Firefox y Safari no lo admiten en absoluto. Pero el evento IE8 tiene algunas limitaciones: no admite el envío de credenciales y solicitudes de "verificación previa" al servidor. Además, su servidor debe estar listo para las solicitudes CORS, es decir, también debe realizar algún trabajo adicional en el servidor.

La mensajería entre dominios mediante el uso de JSONP o iFrames es más universal en términos de compatibilidad con el navegador y, a veces, incluso no requiere un trabajo adicional en el servidor.

+0

Para navegadores antiguos, puede usar el flash para CORS, por ejemplo: http://flxhr.flensed.com/. 'postMessage' requiere un navegador moderno. – Esailija

+1

Deberíamos calificar que el soporte de CORS en Exporer 8/9 no es estándar en comparación con los otros navegadores. Específicamente, jQuery admite CORS estándar, pero no el equivalente de Explorer. Explorer 10 es compatible con CORS estándar aunque me lo dicen. – hippietrail

Cuestiones relacionadas