Estoy aprendiendo programación ahora, así que perdónenme por cualquier error, estaré agradecido por cualquier consejo. Tengo una API que está alojada en el siguiente dominio ("api-myapp.com") y estoy intentando desde mi localhost donde estoy creando mi interfaz para publicar un formulario (que solo los usuarios registrados pueden enviar) usando axios , pero la solicitud tarda mucho tiempo en completarse y cuando se completa devuelve el siguiente error (no hay un encabezado 'Access-Control-Allow-Origin' en el recurso solicitado). (net::ERR_FAILED 504), I Probé algunas soluciones que encontré en Internet pero ninguna parece haber funcionado, este es mi código:
Interfaz:
try { const response = await axios.post('/alunos/', { nome,sobrenome,idade,sangue,varinha,patrono,house,sala, }); toast.success('Cadastrado com sucesso'); console.log(response); } catch (e) { console.log(e); const errors = get(e, 'response.data.errors', []); errors.map((error) => toast.error(error)); }cuando iniciaste sesión
try { const response = yield call(axios.post, '/tokens', payload); yield put(actions.loginSuccess({ ...response.data })); axios.defaults.headers.Authorization = `Bearer ${response.data.token}`; toast.success('Login realizado com sucesso!'); payload.navigate('/dashboard'); }back-end
class App { constructor() { this.app = express(); this.middlewares(); this.routes(); } middlewares() { this.app.use(cors({ origin: '*' })); this.app.use(helmet({ crossOriginResourcePolicy: false })); this.app.use(express.urlencoded({ extended: true })); this.app.use(express.json()); this.app.use('/images/', express.static(resolve(__dirname, '..', 'uploads', 'images'))); } routes() { this.app.use('/', homeRoutes); this.app.use('/prof', profRoutes); this.app.use('/tokens', tokenRoutes); this.app.use('/alunos', alunoRoutes); this.app.use('/casas', casaRoutes); this.app.use('/provas', provaRoutes); this.app.use('/materias', materiaRoutes); this.app.use('/salas', salaRoutes); this.app.use('/fotosAlunos', fotoAlunoRoutes); this.app.use('/fotosProf', fotoProfRoutes); } }Debe habilitar CORS en el backend para permitir la solicitud a través de diferentes puertos. Para su caso, ya que está utilizando la biblioteca express y cors, puede probar esto.
app.use( cors({ credentials: true, methods: 'GET,HEAD,PUT,PATCH,POST,DELETE,OPTIONS', allowedHeaders: ['Content-Type', 'Authorization'], origin: ['http://localhost:3000', 'http://localhost:3030'], // whatever ports you used in frontend }) );