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

283
Vistas
FastAPI rechaza la solicitud POST del código javascript pero no de una aplicación de solicitud de terceros (insomnio)

Cuando uso el insomnio para enviar una solicitud de publicación, recibo un código 200 y todo funciona bien, pero cuando envío una solicitud de recuperación a través de javascript, aparece un 405 'error de método no permitido', aunque he permitido las solicitudes de publicación de el lado del servidor. (El código del lado del servidor usa python).

Código del lado del servidor

 from pydantic import BaseModel from typing import Optional from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware app = FastAPI() origins = ["*"] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["POST", "GET"], allow_headers=["*"], ) class data_format(BaseModel): comment_id : int username : str comment_body : Optional[str] = None @app.post('/post/submit_post') async def sumbit_post(somename_3: data_format): comment_id = somename_3.comment_id username = somename_3.username comment_body = somename_3.comment_body # add_table_data(comment_id, username, comment_body) //Unrelated code return { 'Response': 'Submission received', 'Data' : somename_3 }

codigo js

 var payload = { "comment_id" : 4, "username" : "user4", "comment_body": "comment_4" }; fetch("/post/submit_post", { method: "POST", body: JSON.stringify(payload), headers: { 'Content-Type': 'application/json' } }) .then(function(res){ return res.json(); }) .then(function(data){ alert( JSON.stringify( data ) ) })

El error

ingrese la descripción de la imagen aquí

¿Qué debo hacer para sortear este error?
Gracias por adelantado.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Para empezar, su código parece estar funcionando bien. La única parte que tuvo que cambiarse durante la prueba (localmente) fue la URL en la búsqueda de /post/submit_post a (por ejemplo) http://127.0.0.1:8000/post/submit_post , pero supongo que ya cambió eso usando el nombre de dominio que apunta a su aplicación.

El código de estado 405 Method Not Allowed no está relacionado con CORS. Si POST no se incluyera en la lista allow_methods , el código de estado de respuesta sería 400 Bad Request (podría intentar eliminarlo de la lista para probarlo). De la referencia anterior:

El código de estado de respuesta 405 Method Not Allowed del Protocolo de transferencia de hipertexto (HTTP) indica que el servidor conoce el método de solicitud, pero el recurso de destino no admite este método .

El servidor debe generar un campo de encabezado Allow en una respuesta de código de estado 405. El campo debe contener una lista de métodos que el recurso de destino admite actualmente.

Por lo tanto, el código de estado 405 indica que el servidor recibió y reconoció la solicitud POST , pero el servidor rechazó ese método HTTP específico para ese punto final en particular. Por lo tanto, le sugiero que se asegure de que el decorador del punto final en la versión que está ejecutando esté definido como @app.post y que no haya otro punto final con la misma ruta usando @app.get . Además, asegúrese de que no haya ningún redirect involuntario dentro del punto final, ya que esa sería otra posible causa de ese código de estado de respuesta. Para referencia futura, al redirigir de una POST a GET , el código de estado de respuesta debe cambiar a 303 , como se muestra aquí . Además, podría intentar permitir todos los métodos HTTP con el comodín * (es decir, allow_methods=['*'] ) y ver cómo funciona (aunque no debería estar relacionado con eso). Por último, esto también podría estar relacionado con las configuraciones del servicio de alojamiento en el que está ejecutando la aplicación; por lo tanto, podría ser bueno echar un vistazo a eso también.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Es un problema antiguo, descrito aquí . Necesita Access-Control-Request-Method: POST en su solicitud.

about 4 years ago · Juan Pablo Isaza 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