Compartir a través de


Uso de Azure Front Door Estándar y Premium con uso compartido de recursos entre orígenes (CORS)

Se aplica a: ✔️ Front Door Standard ✔️ Front Door Premium

¿Qué es CORS?

CORS (Uso compartido de recursos entre orígenes) es una característica de HTTP que permite que una aplicación web que se ejecuta en un dominio tenga acceso a recursos de otro dominio. Para reducir la posibilidad de ataques de scripting entre sitios, todos los exploradores web modernos implementan una restricción de seguridad que se conoce como directiva del mismo origen. Esto impide que una página web llame a las API de un dominio distinto. CORS aporta un modo seguro de permitir que un origen (el dominio de origen) llame a las API de otro origen.

Funcionamiento

Hay dos tipos de solicitudes de CORS, solicitudes sencillas y solicitudes complejas.

Para solicitudes sencillas:

  1. El explorador envía la solicitud de CORS con otro encabezado de solicitud HTTP Origin (Origen). El valor de este encabezado es el origen del que proviene la página primaria, que se define como la combinación de protocolo,dominio, y puerto. Cuando una página de https://www.contoso.com intenta acceder a datos de un usuario en el origen fabrikam.com, se envía el siguiente encabezado de solicitud a fabrikam.com:

    Origin: https://www.contoso.com

  2. El servidor puede responder con cualquiera de las siguientes respuestas:

    • Un encabezado Access-Control-Allow-Origin en la respuesta, que indica cuál de los sitios de origen se permite. Por ejemplo:

      Access-Control-Allow-Origin: https://www.contoso.com

    • Un código de error HTTP como el 403, si el servidor no permite la solicitud entre orígenes después de comprobar el encabezado Origin (Origen)

    • Un encabezado Access-Control-Allow-Origin con un carácter comodín que permite todos los dominios:

      Access-Control-Allow-Origin: *

Para solicitudes complejas:

Una solicitud compleja es una solicitud de CORS en la que es necesario que el explorador envíe una solicitud preparatoria (es decir, un sondeo preliminar) antes de enviar la solicitud de CORS real. La solicitud preparatoria solicita el permiso del servidor si la solicitud de CORS original puede continuar y es una solicitud OPTIONS a la misma dirección URL.

Sugerencia

Para obtener más detalles sobre los flujos de CORS y los errores comunes, consulte la Guía de CORS para las API de REST.

Escenarios de origen único o carácter comodín

CORS en Azure Front Door funciona automáticamente sin ninguna configuración adicional cuando el encabezado Access-Control-Allow-Origin se establece en comodín (*) o en un único origen. Azure Front Door almacena en caché la primera respuesta y las solicitudes subsiguientes usan el mismo encabezado.

Si las solicitudes se enviaron a Azure Front Door antes de establecer CORS en el origen, debe purgar el contenido del contenido del punto de conexión para volver a cargar el contenido con el encabezado Access-Control-Allow- Origin.

Escenarios de varios orígenes

Si necesita permitir una lista específica de orígenes admitidos para CORS, el proceso puede resultar un poco más complicado. Encontramos el primer problema cuando la red CDN copia en caché el encabezado Access-Control-Allow-Origin el primer origen de CORS. Cuando otro origen de CORS realiza otra solicitud, la red CDN sirve el encabezadoAccess-Control-Allow-Origin almacenado en caché, que no coincide. Existen diversas formas de corregir este problema.

Conjunto de reglas de Azure Front Door

En Azure Front Door, puede crear una regla en el conjunto de reglas de Azure Front Door para comprobar el encabezado Origin (Origen) de la solicitud. Si es un origen válido, la regla establece el encabezado Access-Control-Allow-Origin con el valor correcto. En este caso, el encabezado Access-Control-Allow-Origin del servidor de origen del archivo se ignora y el motor de reglas de AFD administra totalmente los orígenes de CORS admitidos.

Recorte de pantalla del ejemplo de reglas con el conjunto de reglas.

Sugerencia

Puede agregar más acciones a la regla para modificar otros encabezados de respuesta, como Access-Control-Allow-Methods.

Paso siguiente

Aprenda a Crear una instancia de Front Door.