Recientemente hemos estado trabajando en una aplicación web bastante moderna y estamos listos para desplegarla para alpha/beta y obtener experiencia en el mundo real con ella.Alojando contenido estático en diferentes dominios de los servicios web, ¿cómo evitar el dominio cruzado?
Tenemos servicios web basados en ASP.Net (API web) y un front-end de JavaScript que es 100% MVC del lado del cliente utilizando la red troncal.
Hemos comprado nuestro nombre de dominio, y por el bien de esta pregunta nuestro despliegue se ve así:
webservices.mydomain.com (Servicios Web)
mydomain.com (JavaScript front-end)
Si el JavaScript intenta hablar con los servicios web en el subdominio explotamos con problemas de dominio cruzado, he jugado con CORS pero no estoy satisfecho con el soporte de navegador cruzado, así que estoy contando esto como una opción.
En nuestras PC de desarrollo hemos utilizado un proxy inverso de IIS para reenviar todas las solicitudes a mydomain.com/webservices a webservices.mydomain.com - Lo cual resuelve todos nuestros problemas ya que el navegador cree que todo está en el mismo dominio.
Así que mi pregunta es, en una implementación pública, ¿cómo se resuelve este problema más comúnmente? Es un proxy inverso la forma correcta de hacerlo? Si es así, ¿hay algún servicio alojado que ofrezca un proxy inverso para esta situación? ¿Hay mejores formas de implementar esto?
Quiero usar CloudFront CDN ya que todos nuestros servidores/servicios están alojados en Amazon, pero estoy luchando por encontrar información sobre si un CDN puede admitir este tipo de configuración.
Gracias
Quizás mi implementación personal sea demasiado simple (y si es así, también me interesarían los comentarios de los demás). Supongo que lo que falta es ¿cuál es el transporte de datos entre la parte frontal/posterior? En mi implementación simple, el frente se comunica con la parte posterior (servicio WCF) a través de JSONP para una implementación de dominio cruzado "real". Si necesito "proxy", entonces es un "proxy de la aplicación" - front en mydomain.com hablará con un controlador (es decir, ashx) en mydomain.com que "proxies" la solicitud http a WCF en myotherdomain.com. – EdSF
¿Estás usando JQuery o javascript puro? (en el caso de JQuery, puede usar esto: http://usejquery.com/posts/the-jquery-cross-domain-ajax-guide) – ONOZ
Para WebAPI, puede revisar esta publicación sobre cómo habilitar CORS con JSONP que debería funcionar bien en todos los navegadores http://goo.gl/KjT6y – cecilphillip