Nginx

Cómo usar CORS con Nginx

Cómo usar CORS con Nginx

Que es CORS

CORS, también conocido como uso compartido de recursos de origen cruzado, es una técnica utilizada en los navegadores web modernos que controla el acceso a los recursos alojados en un servidor web. CORS utiliza encabezados adicionales como origin, access-control-origin y muchos más para determinar si el recurso solicitado tiene permiso para ser enviado al navegador. El propósito principal de CORS es evitar que una aplicación web que se ejecuta en un navegador web acceda a recursos alojados en un origen diferente cuando no hay permiso, lo que significa que la aplicación web no puede descargar recursos, como imágenes, scripts, CSS como cualquier contenido, etc. cuando no están alojados en el mismo origen (por lo general, todos deben estar en el mismo dominio) que la aplicación web, a menos que el servidor esté configurado para permitir este comportamiento. Al tener esta implementación en un navegador web, los usuarios pueden proteger sus datos de partes no autorizadas. Un pirata informático puede modificar en secreto una página web mientras está en medio de la conexión para interrumpir el negocio del usuario u obtener acceso a datos valiosos. Sin embargo, CORS también tiene ventajas, como que permite a los desarrolladores cargar recursos desde un origen diferente debido a la rentabilidad o simplemente a la conveniencia. En ese caso, tienen que modificar su servidor web para permitir tales solicitudes. Este artículo demuestra cómo hacerlo en un servidor web Nginx con facilidad.

Qué desencadena una solicitud CORS

No todas las solicitudes desencadenan una solicitud CORS, ya que generalmente los recursos se alojan en el mismo origen que la aplicación web. Si es diferente, entonces CORS se activa. CORS tiene dos tipos de solicitudes, solicitud simple y solicitud de vuelo anticipado de CORS.

Solicitud simple funciona como una solicitud regular, el navegador web envía una solicitud al servidor para descargar un recurso en particular cuando el usuario lo inició, luego el servidor web verifica el origen de la solicitud, la compara con las reglas en el servidor web, si es emparejado, el recurso se suministra. Este tipo de solicitud usa encabezados OIRIGN y ACCESS-CONTROL-ALLOW-ORIGIN para determinar si el recurso debe ser proporcionado o no. La solicitud simple solo se activa si se utilizan métodos de solicitud como GET, HEAD, POST, y se usan encabezados como Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width. Incluso entonces, no todos los tipos de contenido desencadenan una simple solicitud. Aquí solo los tipos de codificación de formularios desencadenan una solicitud simple.

El tipo de solicitud previa al vuelo es bastante diferente, ya que no hay acceso directo a los recursos en la primera ronda. Cuando las condiciones mencionadas anteriormente se alteran de alguna manera, ya sea mediante el uso de un encabezado de solicitud diferente o un tipo de contenido diferente, se activa una solicitud de vuelo previo. En las solicitudes realizadas previamente, el navegador web primero se asegura de que puede acceder al recurso comunicándose con el navegador web, luego, cuando el navegador web responde con una respuesta aceptable (HTTP 200), envía otra solicitud para descargar el recurso. Utiliza el método de solicitud HTTP OPTION para iniciar la primera solicitud, luego usa GET, POST como tipos de solicitud para descargar los recursos.

Cómo configurar Nginx para admitir solicitudes CORS

Esta sección muestra cómo configurar un servidor web nginx para permitir el intercambio de recursos de origen cruzado. Esto solo se puede hacer si el desarrollador tiene acceso al servidor web, ya que implica modificar el archivo de configuración de Nginx.

Utilice el siguiente fragmento de código simple para permitir solicitudes CORS. Esto debe copiarse en el archivo predeterminado del servicio nginx en Ubuntu o en cualquier otra plataforma.

localización \
if ($ request_method = 'OPTIONS')
add_header 'Access-Control-Allow-Origin' 'https: // localhost;
add_header 'Access-Control-Allow-Methods "POST, OPTIONS';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type "text / plain; charset = utf-8';
return 204;

if ($ request_method = 'POST')
add_header 'Access-Control-Allow-Origin "https: // localhost;
add_header 'Access-Control-Allow-Methods' 'POST';

El fragmento de código básico es el anterior. Contiene directivas como request_method, add_header para identificar el tipo de solicitud y establecer el encabezado de la respuesta para que el navegador lea respectivamente. El encabezado Access-control-allow-origin define a qué origen tiene acceso el recurso, por ejemplo, si una aplicación web alojada en github quiere acceder a una imagen alojada en myOwnServer.com, entonces la URL de github debe usarse como el valor de la directiva Access-control-allow-origin en myOwnServer.com, luego, siempre que la aplicación web alojada en github envíe solicitudes a myOwnServer.com para descargar el archivo de imagen, todos estos solicitados tienen permiso. El encabezado Access-control-allow-method define qué tipos de solicitud admite la aplicación web que envía las solicitudes, luego el resto de los encabezados son para su edad máxima para almacenar en caché las solicitudes y el tipo de contenido admitido.

Como se describió anteriormente, una vez que se completó la solicitud OPTION, el navegador envía otra solicitud para descargar los recursos si la primera solicitud fue exitosa, sus encabezados se establecen en el primer request_method si corchetes.

Además de las directivas mencionadas anteriormente, existen otras directivas importantes en Nginx que se pueden utilizar en las solicitudes de CORS. Una de las directivas más importantes es access-control-allow-headers, lo que hace es establecer el encabezado de respuesta con nombres de encabezado permitidos para que el navegador verifique. Una aplicación web puede tener sus propios encabezados para diversos fines, y si dichos encabezados están presentes en las solicitudes posteriores después de la solicitud OPTIONS inicial, el servidor web debe permitir todos estos encabezados antes de que se comparta el recurso solicitado.

Es importante que este fragmento de código esté en el lugar correcto en el archivo predeterminado de Nginx, porque Nginx ejecuta diferentes bloques de ubicación dependiendo de la URL coincidente, si dicho bloque de ubicación no contiene este fragmento de código, entonces no se ejecuta en absoluto, y, por lo tanto, es importante usar esto en todos los bloques de ubicación para el lado seguro. Algunos de los bloques de ubicación importantes son Imágenes, PHP (~ \.php $), CSS, etc ... bloques.

Una vez guardado el fragmento de código mencionado anteriormente, guarde el archivo Nginx y vuelva a cargar el servicio Nginx para que los cambios surtan efecto.

Conclusión

CORS, se conoce como intercambio de recursos de origen cruzado y es una técnica para controlar el acceso a los recursos. Estos recursos pueden ser cualquier archivo, desde una imagen hasta un archivo javascript. El propósito principal de CORS es reforzar la seguridad de las aplicaciones web para evitar ataques de intermediarios. Sin embargo, CORS también puede tener beneficios. En ese caso, el CORS debe estar encendido, ya que no está permitido de forma predeterminada. El tipo de solicitud CORS básico es el tipo de solicitud simple, usa solo las directivas ORIGIN y ACCESS-CONTROL-ALLOW-ORIGIN, y con esa ayuda, Nginx puede otorgar permiso para que el navegador web acceda al recurso solicitado según el origen. De cualquier manera, CORS es bastante útil y debe usarse con cuidado.

Los mejores juegos de Oculus App Lab
Si es propietario de un visor Oculus, debe estar informado sobre la descarga lateral. Sideloading es el proceso de instalación de contenido que no es ...
Los 10 mejores juegos para jugar en Ubuntu
La plataforma Windows ha sido una de las plataformas dominantes para juegos debido al gran porcentaje de juegos que se están desarrollando hoy para ad...
5 mejores juegos de arcade para Linux
Hoy en día, las computadoras son máquinas serias que se usan para jugar. Si no puede obtener la nueva puntuación más alta, sabrá a qué me refiero. En ...