Estoy aprendiendo javascript y express. Ya hice aplicaciones backend que funcionaron correctamente, pero no sé cómo enviar una solicitud desde un navegador y recibir la respuesta del servidor . Este es un ejemplo simple de lo que he intentado:
servidor.js :
const express = require("express"); const app = express(); app.listen(3000, () => { console.log("Listening on port 3000!") }) app.get("/", (req, res) => { res.send("Hello"); }) El servidor está en la plataforma glitch.com . Cuando voy al proyecto https://expressjs-test.glitch.me/ desde mi navegador, veo el mensaje Hello en el documento HTML (funciona correctamente).
Archivo Javascript ejecutado desde mi navegador :
let req = fetch("https://expressjs-test.glitch.me/"); req.then(response => console.log(response));El problema que tengo cuando trato de hacer esto es :
Access to fetch at 'https://expressjs-test.glitch.me/' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.He visto otras preguntas sobre stackoverflow y otros sitios, pero no entendí cómo solucionar este error cors.
Gracias por tu tiempo. Lo siento si cometí un error en esta publicación.
Cuando aloja su aplicación en glitch.com , debe permitir el acceso a los dominios, es decir, qué dominio puede acceder a su backend. Una vez que lo haga, podrá recibir datos de la API.
También puede agregar el complemento chrome cors por el momento y habilitarlo. Después de habilitarlo, vuelva a cargar la página web y podrá ver la respuesta.
Otra forma de probar o obtener datos de la API, puede usar PostMan o, si usa el código de Visual Studio, puede usar Thunder Client desde Market Place.
Si hay configuraciones en la consola, le recomiendo que agregue cors a su servidor Node.js.
const express = require("express"), app = express(), cors = require("cors"), // importing the `cors` package const whitelist = ['http://example1.com', 'http://example2.com'] const corsOptions = { origin: function (origin, callback) { if (whitelist.indexOf(origin) !== -1) { callback(null, true) } else { callback(new Error('Not allowed by CORS')) } } } app.use(cors(corsOptions)) // tells Express to use `cors`, and solves the issue app.listen(3000, () => { console.log("Listening on port 3000!") }) app.get("/", (req, res) => { res.send("Hello"); })Debe consultar la documentación de cors aquí y hay otro enlace para el problema de glitch cors.
Necesitas usar cors en tu aplicación. Por lo tanto, se puede acceder desde la aplicación frontend ya que los dominios son diferentes.
const cors = require('cors');Esto le permite permitir cualquier dominio frontend
app.use(cors({ origin: '*' }));Esto le permite permitir ciertos
app.use(cors({ origin: ['https://siteA.com', 'https://siteB.com'] }));