Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

871
Vistas
¿Por qué obtengo un error de CORS? Motivo: la solicitud de CORS no tuvo éxito

Estoy desarrollando una aplicación esbelta que utiliza un backend FastAPI para interactuar con una base de datos PostgreSQL que es local para mi organización, no en mi instancia de AWS EC2.

Utilizo la API de recuperación de javascript para enviar solicitudes a mi backend para consultar la base de datos por varias cosas, en mi máquina local todas estas solicitudes se reciben en ambos extremos, en AWS, sin embargo, las solicitudes de mi frontend ni siquiera son reconocidas por el fastAPI backend.

No tengo experiencia en la configuración de servidores como este, así que asumo que hay algún error básico en la configuración de estos servidores que hace que la comunicación entre ellos en AWS sea imposible.

El código fastapi se ve así:

 import uvicorn from fastapi import (Depends, FastAPI, HTTPException, Query, Request) from fastapi.middleware.cors import CORSMiddleware app = FastAPI(debug=True) origins = [ '*' ] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.get("/") async def root(): return {"message": "Hello World"} if __name__ == '__main__': uvicorn.run(app, host="0.0.0.0", port=8000)

Mis solicitudes de búsqueda suelen tener este aspecto:

 const endpoint = public_IP:8000 + `/`; let objs = []; fetch(endpoint) .then(response => { if (!response.ok) { throw Error(response.statusText); } return response.json(); })

Cuando envío una solicitud de recuperación como la anterior, aparece un error de CORS con el motivo: la solicitud de CORS no tuvo éxito. El servidor FastAPI no tiene comentarios, la solicitud nunca parece llegar, no estoy seguro de por qué. Por lo que sé, esto generalmente tiene que ver con problemas entre solicitudes con HTTP y HTTPS, pero estos no parecen relevantes para mi problema ya que ninguna parte de mi configuración no usa HTTP. Cuando uso Chrome, aparece el error: Failed to load resource: net::ERR_CONNECTION_REFUSED también.

Mis grupos de seguridad de AWS para mi instancia EC2 permiten el tráfico TCP desde cualquier IP a los puertos 5000 y 8000. Que es donde están alojadas mis dos aplicaciones, Svelte y FastAPI respectivamente.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Lo más probable es que su punto final en la aplicación fastapi genere una excepción. Cuando esto ocurre, el CORSMiddleware instalado a través app.add_middleware(...) no ve ninguna respuesta HTTP y no tiene posibilidad de hacer su trabajo en la respuesta HTTP producida por el controlador de errores FastAPI.

La solución es envolver toda la aplicación FastAPI con CORSMiddleware como en:

 import uvicorn from fastapi import (Depends, FastAPI, HTTPException, Request from fastapi.middleware.cors import CORSMiddleware app = FastAPI(debug=True) origins = [ '*' ] @app.get("/") async def root(): return {"message": "Hello World"} app = CORSMiddleware( app=app, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) if __name__ == '__main__': uvicorn.run(app, host="0.0.0.0", port=8000)
over 4 years ago · Santiago Trujillo Denunciar

0

Resumen

Los errores de CORS pueden ser muy confusos a veces porque los mensajes de error no son lo suficientemente claros y hay muchas soluciones posibles.

Primera posibilidad

  • Si carga su página desde un host determinado, en su caso 0.0.0.0 y luego intenta realizar una solicitud a otro host, por ejemplo 127.0.0.1 , la solicitud se bloquea para evitar ataques XSS.

Cambiar su host de 0.0.0.0 a 127.0.0.1 debería solucionar este problema.

Segunda posibilidad

Si eres un Mozillian, hay errores [ ver , ver ] en Mozilla, pero si este es el caso, tu código debería estar funcionando en otro navegador

Solución: debe habilitar el certificado en cada puerto individualmente.

Otras posibilidades

Intente cambiar su punto final este

 const endpoint = public_IP:8000 + `/`;

a esto

 const endpoint = `/`;
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda