¿Cómo se pueden consumir los servicios web remotos desde un script del lado del cliente? [cerrado]

StackOverflow https://stackoverflow.com/questions/324771

Pregunta

Por lo que entiendo, debido a la " misma política de origen " En los navegadores actuales, es imposible obtener datos de un XmlHttpRequest enviado a un dominio diferente al dominio original de Javascript.

Tengo casi cero experiencia con respecto a este asunto, por lo que estoy confundido acerca de que los servicios web sean inutilizables de Javascript. ¿Significa que las aplicaciones web con funcionalidad Ajax solo pueden interactuar consigo mismas sin llamar a los servicios proporcionados por otros dominios? ¿Cómo & Quot; mash-ups & Quot; trabajo ? Supongo que los servicios se consumen del lado del servidor, luego los datos se pasan al cliente a través de llamadas locales de Ajax. No lo se.

La única forma que puedo imaginar para lograr el consumo de servicios del lado del cliente sería recuperar un archivo Javascript directamente del dominio del servicio web de destino a través de una etiqueta <script>, luego usar su API para interactuar con el dominio remoto.

¿Alguien puede iluminarme?

¿Fue útil?

Solución

En su pregunta mencionó el < script > truco. JSONP se basa en eso. Fue propuesto formalmente hace casi 3 años por Bob Ippolito . No le da derecho a hablar sobre el origen del script & # 8212; el origen está definido por su página web, no por qué más incluye. Funciona solo porque el servidor envuelve JSON en una función de calback, que debe definirse en su código, y será ejecutada por & Lt; script & Gt; cuando está cargado El ejemplo más famoso de JSONP serían los servicios de Yahoo, incluido Flickr.

Otra técnica es usar window.name para transferir la información. Esta técnica fue detallada por Kris Zyp hace cuatro meses . Además, su artículo compara el transporte window.name con JSONP. No conozco ningún proveedor de servicios de alto perfil que admita este nuevo transporte. Obviamente cambiará con el tiempo.

Por supuesto, debo mencionar la próxima Microsoft XDomainRequest . Se está planeando que se envíe con IE8, y ningún otro proveedor se comprometió a admitirlo, pero se presentó para su inclusión en HTML 5. XDR es una funcionalidad útil, pero sospecho que se cambiará varias veces antes de ser aceptado.

Si buscó en los enlaces, probablemente ya sepa que todos estos métodos requieren un cierto nivel de cooperación de un servidor de terceros. No puede usar servicios aleatorios a voluntad. Si tiene que usar un servicio no cooperativo, la única solución es usarlo como proxy a través de su propio servidor con todos los problemas asociados: la legalidad cuestionable, el rendimiento reducido, la mayor carga en su servidor, el número reducido de conexiones entre el navegador del usuario y su servidor, y así sucesivamente.

Otros consejos

Eche un vistazo a JSONP, que funciona en torno a la misma política de origen utilizando prácticamente el enfoque que está describiendo, solo asegúrese de confiar de dónde lo obtiene ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top