La limitación clave que impone la política del mismo origen es que los scripts no pueden inspeccionar o modificar recursos en otros orígenes.
Imagina que has iniciado sesión en Gmail y vas a evil.org. Si no hubiera una política del mismo origen para XHR, evil.org podría simplemente comenzar a hacer XHR para enviar correos electrónicos y leer su correo o publicar mensajes. Lo mismo ocurre con cualquier otro sitio en el que inicie sesión, como, por ejemplo, sus bancos. Esto es claramente malo.
Es la misma razón por la que los scripts no pueden acceder a marcos en otros orígenes. Si evil.org fuera capaz de escribir gmail.com, entonces podría cargar Gmail en un marco y comenzar a hacer cambios en él.
- Como desarrollador front-end independiente, ¿necesito conocer el diseño UX / UI para producir un buen trabajo?
- ¿Cómo compila y ejecuta Java en Sublime Text 2?
- ¿Cómo podría Node.js integrarse con la sintaxis en un sitio web de la misma manera que PHP?
- ¿Por qué debería usar un marco cuando puedo hacer una aplicación igual de rápido mientras uso solo el idioma principal?
- ¿Cómo obtiene Mint.com el historial de transacciones de diferentes cuentas bancarias?
Los navegadores permiten imágenes de origen cruzado, hojas de estilo e incluso archivos de script porque, en la mayoría de los casos, no es posible que terceros inspeccionen los resultados de estos recursos de manera significativa, o generalmente no contienen datos privados. Además, generalmente no es posible realizar modificaciones en un sitio solicitando estos recursos.
Volviendo a un ejemplo, evil.org puede hacer referencia y mostrar el logotipo de Gmail, pero eso no conduce a ninguna hazaña interesante. Incluso si la imagen contenía datos confidenciales, evil.org no puede acceder a ella porque no hay API que lo permitan (la API de lienzo relevante en HTML5 no está permitida en este caso exactamente por esta razón).
En el caso de los archivos de script, ha habido algunos casos de alto perfil (creo que Gmail fue uno) en los que tenían datos privados que resultaron accesibles para terceros, por lo que se vuelve borroso. Pero con XHR, la puerta estaría abierta de par en par, y por eso la limitación está ahí.