Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

956
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

0

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

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda