[Python] FastAPI rejecting POST request from JavaScript code, but not from a 3rd party request...

Discussão em 'Python' iniciado por Stack, Fevereiro 15, 2025.

  1. Stack

    Stack Membro Participativo

    When I use insomnia to send a post request I get a 200 code and everything works just fine, but when I send a fetch request through javascript, I get a 405 'method not allowed error', even though I've allowed post requests from the server side. (Server side code uses python).

    Server side code

    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
    }


    JS code

    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 ) ) })


    The error

    [​IMG]

    What should I do to get around this error?
    Thanks in advance.

    Continue reading...

Compartilhe esta Página