Red de conocimiento informático - Programación de la red - Cómo resolver problemas entre dominios

Cómo resolver problemas entre dominios

Dominio cruzado significa que al enviar una solicitud ajax en una página, debido a las restricciones de la política del mismo origen del navegador, la página actual y el servidor deben tener el mismo origen, es decir, el protocolo, dominio El nombre y el número de puerto deben ser coherentes.

El método JSONP resuelve problemas entre dominios: el principio de jsonp es utilizar etiquetas de secuencia de comandos que no deben estar restringidas por la política del mismo origen del navegador y luego trabajar con el backend para resolver problemas entre dominios. La implementación específica es crear una etiqueta de script en el cliente, luego unir la interfaz de backend de solicitud con un nombre de función de devolución de llamada y pasarlo como parámetro al backend, asignarlo al atributo src de la etiqueta de script y luego agregar el etiqueta de script en el cuerpo Cuando el cliente recibe la solicitud del cliente, analizará el nombre de la función de devolución de llamada y luego concatenará los datos y el nombre de la función de devolución de llamada en una llamada de función y la devolverá. Después del análisis, el cliente llamará a la devolución de llamada definida. función, y luego se puede obtener en la función de devolución de llamada a los datos devueltos por el backend.

CORS resuelve problemas entre dominios: CORS es un mecanismo de intercambio de recursos entre dominios basado en encabezados HTTP. Este mecanismo permite al servidor indicar otros orígenes (dominios, protocolos y puertos), lo que permite que el navegador lo permita. estos orígenes para acceder y cargar sus propios recursos. CORS se activa configurando Access-Control-Allow-Origin en el servidor. Por lo tanto, de esta manera, siempre que el backend implemente CORS, los problemas entre dominios se resolverán y no es necesario configurar el front-end. .

Cree un servidor proxy de Nodo para resolver problemas entre dominios: debido a que el navegador restringe la misma política de origen, la solicitud del servidor al servidor no está restringida por la misma política de origen del navegador, por lo que podemos construir nuestro propio servidor de nodo para el acceso proxy al servidor. El proceso general es: solicitamos nuestro propio servidor proxy de nodo en el cliente y luego reenviamos la solicitud del cliente al servidor en el servidor proxy del nodo. Después de que el servidor procesa la solicitud, responde al servidor proxy con datos y luego al servidor proxy. Los datos de respuesta del servidor se procesan en el servidor proxy y se devuelven al cliente. También existen problemas entre dominios entre el cliente y el servidor proxy que creó, por lo que debe configurar CORS en el servidor proxy.

El proxy inverso de Nginx resuelve problemas entre dominios: nginx resuelve problemas entre dominios a través del proxy inverso, que también utiliza el servidor para solicitar el servidor sin estar restringido por la política del mismo origen del navegador. El cliente solicita el servidor nginx, configura el servidor en el archivo de configuración nginx.conf para escuchar la solicitud del cliente y luego envía la ruta que coincide con la ubicación al servidor real. Después de procesar la solicitud, el servidor devuelve los datos y nginx regresa. los datos al cliente.

El método PostMessage resuelve dominios cruzados: el método window.postMessage puede lograr de forma segura la comunicación entre orígenes. Este método es un mecanismo controlado para eludir esta restricción. Siempre que se use correctamente, este método es muy seguro. . El objetivo principal es implementar la comunicación entre múltiples ventanas y múltiples documentos: transferencia de datos entre páginas y las nuevas ventanas que abren, transferencia de mensajes entre múltiples ventanas y transferencia de mensajes entre páginas y iframes anidados.

El método Websocket resuelve problemas entre dominios: el uso de Websocket también puede resolver problemas entre dominios. Debido a que WebSocket en sí no tiene problemas entre dominios, podemos usar webSocket para comunicarnos entre fuentes no originales. La especificación define una API que establece una conexión de "socket" entre un navegador web y un servidor. En pocas palabras: existe una conexión persistente entre el cliente y el servidor, y ambas partes pueden comenzar a enviar datos en cualquier momento.