Red de conocimiento informático - Espacio del host - ¿Cómo debo configurar una solicitud de Java para que otros puedan acceder a mi solicitud a través de dominios y obtener los datos?

¿Cómo debo configurar una solicitud de Java para que otros puedan acceder a mi solicitud a través de dominios y obtener los datos?

1. Dominio cruzado a través de jsonp

En js, no es posible utilizar XMLHttpRequest directamente para solicitar datos en diferentes dominios. Sin embargo, es posible introducir archivos de script js de diferentes dominios en la página y jsonp utiliza esta función para lograrlo.

Por ejemplo, hay una página a.html. El código que contiene necesita usar ajax para obtener datos json en un dominio diferente. Supongamos que la dirección de datos json son los datos en blogs.com/data. .html.

El código en la página data.html es muy simple, que consiste en establecer un valor de datos que la página a.html desea obtener para el nombre de ventana actual. Código en data.html:

Entonces, en la página a.html, ¿cómo cargamos la página data.html? Obviamente, no podemos cargar directamente la página data.html cambiando la ubicación de la ventana en la página a.html, porque queremos obtener los datos en data.html incluso si la página a.html no salta. La respuesta es utilizar un iframe oculto en la página a.html para actuar como intermediario. El iframe obtiene los datos de data.html y luego a.html obtiene los datos del iframe.

Si el iframe que actúa como intermediario quiere obtener los datos establecidos por window.name en data.html, solo necesita configurar el src de este iframe en www.cnblogs.com/data.html. Luego, si a.html quiere obtener los datos obtenidos por el iframe, es decir, si quiere obtener el valor de window.name del iframe, también debe configurar el src del iframe en el mismo dominio que a. Página .html, de acuerdo con la política anterior sobre el mismo origen, a.html no puede acceder al atributo window.name en el iframe. Este es todo el proceso entre dominios.

Mire el código de la página a.html:

El código anterior es solo el código de demostración del principio más simple. Puede usar js para encapsular el proceso anterior, como la creación dinámica. un iframe registra dinámicamente varios eventos, etc., por supuesto, por seguridad, después de obtener los datos, también puede destruir el iframe como proxy. Hay muchos códigos similares ya preparados en Internet. Si está interesado, puede buscarlos.

Así es como se realiza el dominio cruzado a través de window.name.

4. Utilice el método window.postMessage recientemente introducido en HTML5 para transmitir datos entre dominios

¿El método window.postMessage(message, targetOrigin es una característica recientemente introducida de HTML5? ser utilizado Envía mensajes a otros objetos de ventana, independientemente de si el objeto de ventana pertenece a la misma fuente o a diferentes fuentes. Actualmente, navegadores como IE8, Firefox, Chrome y Opera ya admiten el método window.postMessage.

El objeto de ventana que llama al método postMessage se refiere al objeto de ventana que recibe el mensaje. El primer parámetro de este método es el mensaje que se enviará y el tipo solo puede ser una cadena; targetOrigin Se utiliza para limitar el dominio donde se encuentra el objeto de ventana que recibe el mensaje. Si no desea limitar el dominio, puede utilizar el comodín *?.

El objeto de ventana que necesita recibir mensajes puede obtener el mensaje entrante monitoreando su propio evento de mensaje. El contenido del mensaje se almacena en el atributo de datos del objeto de evento.

El envío de mensajes a otros objetos de ventana mencionados anteriormente en realidad se refiere a la situación en la que una página tiene varios marcos, porque cada marco tiene un objeto de ventana. Cuando discutimos el segundo método, dijimos que los marcos en diferentes dominios pueden obtener los objetos de ventana de los demás y también pueden usar el método window.postMessage. Veamos un ejemplo simple con dos páginas

El resultado que obtuvimos después de ejecutar la página a:

Vemos que la página b recibió el mensaje exitosamente.

Usar postMessage para transmitir datos entre dominios es relativamente intuitivo y conveniente, pero la desventaja es que IE6 e IE7 no lo admiten, por lo que usarlo o no depende de las necesidades reales.

Conclusión:

Además de los métodos anteriores, también existen métodos entre dominios, como flash y configuración de páginas proxy en el servidor, que no se presentarán aquí.

Los cuatro métodos anteriores se pueden seleccionar y aplicar de acuerdo con la situación real del proyecto. Personalmente creo que el método window.name no es complicado y puede ser compatible con casi todos los navegadores. Excelente método. Enfoque entre dominios.

De acuerdo con el tipo de problema específico, realice un desmontaje de pasos/causa y análisis de principios/expansión de contenido, etc.

Los pasos específicos son los siguientes:/Los principales motivos que llevan a esta situación son...