Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

862
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!