Si intentaste consumir el API desde un proyecto personal, puede ser que te hayas encontrado con un error similar:
Access to XMLHttpRequest at ‘http://localhost:8888/login’ from origin ‘http://127.0.0.1:5500’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
No te preocupes, esto es normal… aunque al principio puede ser muy fastidioso.
Esto, más que un error, es un método de protección que tienen los servidores, porque en este caso la URL del api: «http://localhost:8888» es distinta a la url que está intentando consumirla: «http://127.0.0.1:5500»
Sin embargo puede suceder que estés construyendo dos aplicaciones web en donde una consuma a la otra.
Para resolver este problema debemos instalar la siguiente dependencia (en el proyecto Express):
npm install cors
Luego vamos al código y agregamos las siguientes líneas:
const cors = require('cors');
app.options('*', cors());
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', 'url de origen');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
Reemplazar ‘url de origen’ por la URL del sitio que está intentando acceder a tu API, en mi caso:
res.header('Access-Control-Allow-Origin', 'http://127.0.0.1:5500');
(No te olvides de reiniciar el servidor)