Tengo un servidor front-end (que usa VueJS) que está alojado en Vercel, y luego tengo mi back-end como trabajador de servicio que usa HerokuApp. Ahora ambos usan el mismo dominio personalizado (maev.me), pero me gustaría tener una regla CORS para poder hacer que las solicitudes solo se puedan enviar desde un dominio/subdominio a la API.
La API está en un servidor, en la URL api.maev.me , y la interfaz está en la URL normal maev.me
¿Hay alguna forma de probar y configurar una regla ExpressJS CORS? He intentado usar esta expresión regular que hice:
^.+\.+maev\.me$
Pero eso todavía no funciona y escupe el error:
[Error] Origin https://www.example.me is not allowed by Access-Control-Allow-Origin. [Error] XMLHttpRequest cannot load https://api.example.me/me due to access control checks. [Error] Failed to load resource: Origin https://www.example.me is not allowed by Access-Control-Allow-Origin. (me, line 0)Toda ayuda es apreciada.
El problema con su expresión regular es que no coincide con https://maev.me debido al literal .
Intente usar una matriz de cadenas literales mixtas y expresiones regulares
app.use(cors({ origin: ["https://maev.me", /^https:\/\/.+\.maev\.me$/] }))Tenga en cuenta que CORS no es un control de acceso. Esto no evitará que los clientes que no sean navegadores accedan a su API.
Después de su actualización, revisé su API a través de curl y todo parece correcto en lo que respecta a los encabezados CORS.
curl -X OPTIONS -H "Origin: https://maev.me" "https://api.maev.me/"<Acceso-Control-Permitir-Origen: https://maev.me
curl -X OPTIONS -H "Origin: https://foobar.maev.me" "https://api.maev.me/"<Acceso-Control-Permitir-Origen: https://foobar.maev.me
curl -X OPTIONS -H "Origin: https://example.com" "https://api.maev.me/"[sin acceso-control-permitir-origen]
Cualquier otro error no está relacionado con su configuración CORS