¿Qué es el acceso entre dominios?
El acceso entre dominios consiste en solicitar recursos de un dominio a otro a través de solicitudes HTTP.
Punto de impacto: si el servidor no devuelve el encabezado permitido, no se pueden obtener los recursos, lo que resulta en la indisponibilidad del servicio. Esto es común en proyectos de separación de front-end y back-end, servicios de aceleración CDN, etc.;
El significado de dominio: protocolo, nombre de dominio, combinación de puerto.Si alguno de los tres no es igual, se considera dominio cruzado.
Ejemplos de dominios cruzados
tipo | Muestra A | Muestra B | ¿Es entre dominios? |
---|---|---|---|
cuestiones de protocolo | http://www.ejemplo.com | https://www.ejemplo.com | Dominio cruzado |
problema de nombre de dominio | https://ftp.ejemplo.com | https://www.ejemplo.com | Dominio cruzado |
problema de puerto | https://www.ejemplo.com:80 | https://www.ejemplo.com:81 | Dominio cruzado |
Por qué existe una política del mismo origen (el motivo de los problemas entre dominios)
La política del mismo origen es una política de seguridad importante que restringe cómo los documentos de un origen o los scripts cargados por él pueden interactuar con recursos de otro origen. Puede ayudar a bloquear documentos maliciosos y reducir posibles vectores de ataque.
Por ejemplo,
en un navegador normal, si inicia sesión en el sitio web A y luego abre involuntariamente el sitio web B (phishing, sitio web malicioso), el sitio web B tomará sus cookies, llamará a la interfaz del sitio web A y obtendrá información confidencial, lo que conducirá a información fuga., o incluso pérdida de fondos, y la política del mismo origen es resolver el proceso de autenticación (implementado por el navegador) cuando B llama a un sitio web, negando así a B el acceso a A.
Por lo tanto, cuando configuramos los parámetros que se presentan a continuación, siempre debemos prestar atención a los problemas de seguridad del servicio actual para realizar una configuración razonable y segura.
Descripción de parámetros comunes.
Parámetros del encabezado | significado | Configuraciones comunes |
---|---|---|
Control-de-acceso-permitir-origen | Se utiliza para resolver el problema de los permisos de recursos entre dominios. El valor del dominio define el dominio al que se le permite acceder al recurso. El carácter comodín "*" se puede configurar para permitir solicitudes de todos los dominios. | Acceso-Control-Permitir-Origen: * Acceso-Control-Permitir-Origen: <origen> |
Control-de-acceso-edad-máxima | El encabezado de respuesta Access-Control-Max-Age indica durante cuánto tiempo se pueden almacenar en caché los resultados devueltos de la solicitud de verificación previa (es decir, la información proporcionada por Access-Control-Allow-Methods y Access-Control-Allow-Headers). este valor puede evitar solicitudes de OPCIONES frecuentes | Control-de-acceso-edad-máxima: <delta-segundos> |
Método de solicitud de control de acceso | El encabezado de solicitud Access-Control-Request-Method aparece en la solicitud de verificación previa (solicitud de verificación previa) y se utiliza para informar al servidor qué método HTTP se utilizará en la solicitud real. Debido a que el método utilizado en las solicitudes de verificación previa siempre es OPCIONES, que es diferente del método utilizado en las solicitudes reales, este encabezado de solicitud es necesario. | Métodos de permiso de control de acceso: PUBLICAR, OBTENER, OPCIONES |
Control-de-acceso-permitir-credenciales | El encabezado de respuesta Access-Control-Allow-Credentials se utiliza para indicarle al navegador si la respuesta a la solicitud puede exponerse al código JavaScript de front-end cuando la solicitud requiere credenciales (el valor de Request.credentials se incluye). | Control de acceso-Permitir-Credenciales: verdadero |
Nota especial
- Access-Control-Max-Age: configurar el tiempo de caché puede mejorar el rendimiento, pero diferentes navegadores tienen su propio límite superior para el tiempo de caché, es decir, su configuración es muy larga, pero en realidad no cumplirá con sus expectativas. Se recomienda configurar 86400 es suficiente.