¿Qué es CORS?
CORS (Cross-Origin Resource Sharing) es una tecnología que permite a los sitios web compartir recursos entre dominios diferentes. Esto es muy útil para evitar la limitación de la misma origen (SOP) que existe en los navegadores modernos. Sin CORS, una aplicación web que se ejecuta en un dominio diferente al servidor web no puede acceder a los recursos alojados en el servidor web. Esto es un problema común para las aplicaciones web modernas que utilizan API externas o contenido dinámico. La tecnología CORS se ha creado para solucionar este problema.
CORS es un estándar que permite a un servidor web especificar qué orígenes (dominios) tienen acceso a sus recursos. Esto se hace mediante el envío de un encabezado especial desde el servidor web con cada respuesta. El encabezado se llama “Access-Control-Allow-Origin” y contiene la lista de orígenes permitidos. Por ejemplo, si un servidor web establece este encabezado como “*”, significa que cualquier orígenes puede acceder a sus recursos. Si el servidor web establece el encabezado como “https://ejemplo.com”, entonces solo los recursos de ese dominio tendrán acceso a los recursos alojados en el servidor web.
CORS también permite a un servidor web especificar qué tipos de solicitudes (como GET, POST, PUT, DELETE, etc.) pueden ser enviadas desde un origen específico. Esto se hace mediante el encabezado “Access-Control-Allow-Methods”. Por ejemplo, si un servidor web establece este encabezado como “GET, POST, PUT”, entonces solo las solicitudes GET, POST y PUT serán permitidas desde un origen específico.
Además de esto, CORS también permite a un servidor web especificar qué encabezados de solicitud pueden ser enviados desde un origen específico. Esto se hace mediante el encabezado “Access-Control-Allow-Headers”. Por ejemplo, si un servidor web establece este encabezado como “Content-Type, Authorization”, entonces solo los encabezados de solicitud Content-Type y Authorization serán permitidos desde un origen específico.
CORS también permite a un servidor web especificar si una solicitud puede ser enviada con credenciales (como cookies, HTTP Authentication, etc.) desde un origen específico. Esto se hace mediante el encabezado “Access-Control-Allow-Credentials”. Por ejemplo, si un servidor web establece este encabezado como “true”, entonces las solicitudes desde un origen específico pueden ser enviadas con credenciales.
CORS es una tecnología muy útil para permitir a las aplicaciones web modernas acceder a recursos alojados en servidores web diferentes. Permite a los desarrolladores web especificar qué orígenes tienen acceso a los recursos, qué tipos de solicitudes se pueden enviar desde un origen específico, qué encabezados de solicitud se pueden enviar desde un origen específico y si una solicitud puede ser enviada con credenciales desde un origen específico. Esto permite a los desarrolladores web controlar quién puede acceder a sus recursos de forma segura y eficiente.
Ventajas de usar CORS
Usar CORS para permitir el acceso a los recursos alojados en un servidor web ofrece varias ventajas, como:
- Seguridad: CORS permite a los desarrolladores web controlar quién tiene acceso a sus recursos de forma segura.
- Mejor rendimiento: CORS permite a las aplicaciones web acceder a los recursos alojados en servidores web diferentes sin tener que realizar una solicitud adicional al servidor web. Esto reduce el tiempo de carga de la aplicación web.
- Compatibilidad: CORS es compatible con la mayoría de los navegadores modernos, lo que significa que no hay que preocuparse por el soporte para versiones antiguas.
Cómo usar CORS
Usar CORS es relativamente sencillo. El primer paso es configurar el servidor web para que envíe los encabezados “Access-Control-Allow-Origin”, “Access-Control-Allow-Methods” y “Access-Control-Allow-Headers” con cada respuesta. Esto se hace mediante la configuración de un archivo .htaccess o una configuración similar en el servidor web. Esto le indicará al navegador qué orígenes tienen acceso a los recursos alojados en el servidor web.
Una vez que el servidor web está configurado, el siguiente paso es enviar una solicitud desde el origen deseado. Esta solicitud debe incluir los encabezados necesarios para indicar al servidor web que está autorizado a acceder al recurso. Esto se hace mediante la configuración del encabezado “Origin” de la solicitud. Por ejemplo, si el origen es “https://ejemplo.com”, entonces el encabezado “Origin” de la solicitud debe ser establecido como “https://ejemplo.com”.
El último paso es procesar la solicitud en el servidor web. Si la solicitud incluye los encabezados correctos, el servidor web debe devolver el recurso solicitado junto con los encabezados “Access-Control-Allow-Origin”, “Access-Control-Allow-Methods” y “Access-Control-Allow-Headers” para indicar al navegador que el origen es permitido. Si la solicitud no incluye los encabezados correctos, el servidor web debe devolver un error.
Conclusiones
CORS es una tecnología útil para permitir el acceso a los recursos alojados en servidores web diferentes. Permite a los desarrolladores web especificar qué orígenes tienen acceso a los recursos, qué tipos de solicitudes se pueden enviar desde un origen específico, qué encabezados de solicitud se pueden enviar desde un origen específico y si una solicitud puede ser enviada con credenciales desde un origen específico. Esto permite a los desarrolladores web controlar quién puede acceder a sus recursos de forma segura y eficiente.
Usar CORS es relativamente sencillo. El primer paso es configurar el servidor web para que envíe los encabezados necesarios con cada respuesta. El segundo paso es enviar una solicitud desde el origen deseado con los encabezados necesarios. El último paso es procesar la solicitud en el servidor web. Si la solicitud incluye los encabezados correctos, el servidor web debe devolver el recurso solicitado junto con los encabezados necesarios para indicar al navegador que el origen es permitido.
CORS es una tecnología muy útil para permitir el acceso seguro y eficiente a los recursos alojados en servidores web diferentes. Si estás desarrollando una aplicación web que necesita acceder a recursos alojados en servidores web diferentes, entonces deberías considerar usar CORS para permitir el acceso seguro y eficiente a estos recursos.