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

949
Views
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.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

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 incluyó en la lista allow_methods , el código de estado de respuesta sería 400 Bad Request (puede 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 ninguna redirect no intencional 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.

over 4 years ago · Santiago Trujillo Report

0

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

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!