Servidor habilitado para CORS que no deniega solicitudes

Estoy tratando de usar Express Cors con mi servidor resitfy y no parece estar negando solicitudes provenientes de otros ips. Estoy trabajando localmente, así que intenté establecer el origen en una IP pública aleatoria, pero todas mis solicitudes aún están en proceso.

Aquí está mi ruta:

module.exports = function(app) { var user = require('./controllers/userController'); var cors = require('cors'); var corsOptions = require('./cors.json'); app.post('/auth/signup', cors(corsOptions),user.createUser); app.post('/auth/login', cors(corsOptions), user.validateUser); app.post('/auth/generateKeys', cors(corsOptions), user.generateKeys); app.post('/auth/generateToken', user.generateToken); }; 

y aquí está mi archivo cors.json donde he establecido una ip aleatoria:

 { "origin": "http://172.16.12.123", "optionsSuccessStatus": 200, } 

Con cors establecidos en la ruta, puedo ver lo siguiente en el cartero, pero la solicitud aún está en curso. Yo esperaría una respuesta de acceso denegado.

Access-Control-Allow-Origin → http://172.16.12.123

La configuración de CORS por sí sola no hará que un servidor rechace las solicitudes de ninguna IP. No puedes hacer eso solo a través de la configuración de CORS.

Lo único que un servidor hace de manera diferente cuando lo configura con el soporte de CORS es simplemente enviar el encabezado de respuesta de Access-Control-Allow-Origin y otros encabezados de respuesta de CORS. Eso es.

La aplicación real de las restricciones CORS se realiza solo por los navegadores, no por los servidores.

Por lo tanto, independientemente de la configuración de CORS del lado del servidor que realice, el servidor seguirá aceptando solicitudes de todos los clientes y orígenes, de lo contrario; en otras palabras, todos los clientes de todos los orígenes siguen recibiendo respuestas del servidor tal como lo harían de otra manera.

Pero los navegadores solo expondrán las respuestas de las solicitudes de origen cruzado al código frontend de JavaScript que se ejecuta en un origen particular si el servidor al que se envió la solicitud se habilita para permitir la solicitud respondiendo con un encabezado Access-Control-Allow-Origin que permite origen.

Eso es lo único que puedes hacer usando la configuración de CORS. No puede hacer que un servidor solo acepte y responda a solicitudes de orígenes particulares simplemente haciendo cualquier configuración de CORS del lado del servidor. Para hacer eso, necesita usar algo que no sea solo la configuración de CORS.

CORS no impide que nadie envíe solicitudes GET o POST a su aplicación o URL de API expuesta.

En su lugar, indica al navegador web que las solicitudes de AJAX se permiten a este servidor, desde el dominio que se ejecutan.

Pero solo las solicitudes AJAX ejecutadas desde un dominio están controladas por CORS. Al ingresar la URL en el navegador web no se activará CORS: no es un firewall .

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

El orden del evento es:

  1. El dominio A ejecuta AJAX en el navegador del usuario para solicitar la URL de la API en el dominio B

  2. El navegador del usuario envía una solicitud primaria básica al dominio B y comprueba si CORS está permitido para el dominio A

  3. Si está permitido, la solicitud AJAX se ejecuta de lo contrario se devuelve null