Red de conocimiento informático - Espacio del host - Problemas entre dominios entre la aplicación móvil y el servidor web

Problemas entre dominios entre la aplicación móvil y el servidor web

El problema entre dominios proviene de la política del mismo origen de JavaScript, es decir, solo si el protocolo + nombre de host + número de puerto (si está presente) son iguales, se permite el acceso mutuo. En otras palabras, JavaScript solo puede acceder y operar recursos en su propio dominio, pero no puede acceder ni operar recursos en otros dominios.

En el pasado, el front-end y el back-end se mezclaban. Por ejemplo, si JavaScript llamaba directamente a un Httphandler en el mismo sistema, no habría ningún problema entre dominios. popularidad de los clientes modernos, por ejemplo, una aplicación generalmente tiene un lado web, un lado de aplicación y un lado de aplicación web. Varios clientes generalmente usan el mismo conjunto de lógica de procesamiento en segundo plano, es decir, la estrategia de desarrollo de API. El back-end es popular. El front-end solo se centra en la presentación y generalmente usa JavaScript. La lógica de procesamiento de back-end y los datos generalmente usan WebService para proporcionar datos json. Las páginas de front-end generales y las API de servicios web de back-end generalmente se implementan en diferentes servidores o nombres de dominio. De esta forma al solicitar WebService a través de ajax surgirá el problema de la política del mismo origen.

Cabe señalar que la política del mismo origen es una limitación en JavaScript. Otros lenguajes de programación, como C#, Java o iOS, pueden llamar a servicios web externos. En otras palabras, si desarrolla aplicaciones nativas, hágalo. No tengo este problema, pero si desarrolla Web o Html5 como WebApp, generalmente usa JavaScript ajax para iniciar una solicitud a WebService y luego analiza el valor devuelto, por lo que puede haber problemas entre dominios.

Generalmente, es fácil pensar que mover recursos externos al mismo dominio puede resolver las limitaciones de la política del mismo origen. Es decir, al mismo tiempo se desarrolla una página de servidor Http en el sitio web. Todas las solicitudes de JavaScript se envían a esta página. Esta página utiliza otros idiomas internamente para llamar al servicio web externo. Es decir, agregue una capa de proxy. Este método puede resolver el problema, pero no es lo suficientemente directo y eficiente.

Actualmente, las soluciones entre dominios más comunes incluyen JSONP (JSON con relleno) y CORS (intercambio de recursos entre orígenes). Algunas soluciones requieren la cooperación del cliente y el servidor, como JSOP, y otras solo requieren la cooperación del servidor, como CORS. A continuación se describen estas dos soluciones entre dominios y cómo el servicio web del lado del servidor admite estas dos soluciones entre dominios.

Soporte JSONP y WebService

Bajo la política del mismo origen, un servidor no puede obtener datos fuera del servidor, pero etiquetas como img, iframe y script en html son excepciones. Puede solicitar datos en otros servidores a través del atributo src. JSONP llama a solicitudes entre dominios a través del nodo de script src.

Cuando enviamos una solicitud JSONP al servidor, pasamos un parámetro especial al servicio para indicarle al servidor que maneje el resultado de manera especial. De esta forma, los datos devueltos por el servidor se empaquetarán un poco y el cliente podrá procesarlos.

Por ejemplo, el servidor y el cliente acuerdan pasar un parámetro llamado callback para usar la función JSONP.

Por ejemplo, los parámetros de solicitud son los siguientes:

/ServiceStack/ServiceStack/wiki/Customize-HTTP-Responses

/ServiceStack/ServiceStack/wiki/Request-and-response-filters

/questions/8211930/servicestack-rest-api-and-cors

/questions/15224038/rename-callback-parameter-for-jsonp